Einzelnen Beitrag anzeigen

StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Reason entspricht nicht DLL_PROCESS_DETACH

  Alt 5. Mär 2007, 07:37
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
  Mit Zitat antworten Zitat