Ich glaube ich habe jetzt auch die passende Stellen gefunden:
Delphi-Quellcode:
procedure _InitLib;
asm
{ -> EAX Inittable }
{ [EBP+8] Hinst }
{ [EBP+12] Reason }
{ [EBP+16] Resvd }
MOV EDX,offset Module
CMP dword ptr [EBP+12],DLL_PROCESS_ATTACH
JNE @@notInit
PUSH EAX
PUSH EDX
MOV ModuleIsLib,1
MOV ECX,[EBP+8]
MOV HInstance,ECX
MOV [EDX].TLibModule.Instance,ECX
MOV [EDX].TLibModule.CodeInstance,0
MOV [EDX].TLibModule.DataInstance,0
CALL InitializeModule
POP EDX
POP EAX
@@notInit:
PUSH DllProc
MOV ECX,offset TlsProc
CALL _StartLib
end;
// ExitLib is the same as InitLib in Windows.
und für unload:
Delphi-Quellcode:
function _ExitLib: Integer;
cdecl;
asm
{$IFDEF DEBUG_STARTUP}
INT 3
{$ENDIF}
PUSH EBP
MOV EBP,ESP
PUSH UNWINDFI_TOPOFSTACK
XOR EAX,EAX
PUSH DLL_PROCESS_DETACH
// InitContext.DLLInitState
PUSH EDI
PUSH ESI
PUSH EBX
PUSH EBP
PUSH EAX
// InitContext.Module
PUSH EAX
// InitContext.InitCount
PUSH EAX
// InitContext.InitTable (filled in later)
PUSH EAX
// InitContext.OuterContext
MOV EAX,ESP
CALL InnerExitLib;
ADD ESP, 16
POP EBP
POP EBX
POP ESI
POP EDI
MOV ESP,EBP
POP EBP
end;
Hier hören aber meine Kentnisse auf.
Wie kann ich ich hier Debuggen?
Gruß,
StTüff