Versuch's mal hiermit:
Delphi-Quellcode:
function GetSIDTBaseAddress: DWORD;
assembler;
asm
sub esp, 8
// create stack frame
sidt qword ptr [esp]
mov eax, dword ptr [esp+2]
// write into EAX for return value
add esp, 8
// clean up stack
end;
... oder wenn das nicht geht das hier
Delphi-Quellcode:
function GetSIDTBaseAddress: DWORD;
assembler;
asm
sub esp, 8
// create stack frame
{ sidt qword ptr [esp] }
db $0F, $01, $0C, $24
mov eax, dword ptr [esp+2]
// write into EAX for return value
add esp, 8
// clean up stack
end;
... und wenn das partout nicht geht, versuche
Delphi-Quellcode:
function GetSIDTBaseAddress: DWORD;
assembler;
asm
db $83, $
EC, $08, $0F, $01, $0C, $24, $8B, $44, $24, $02, $83, $C4, $08
end;
Beide sind identisch, eben verschiedene Darstellungen. Und immer an die Besonderheiten denken, die ich u.a. im Artikel beschrieben habe.
Sobald du die BaseAddress hast, kannst du ja den Rest selber schreiben