Guybrush Threepwood Geschrieben 8. August 2007 Geschrieben 8. August 2007 Ich möchte die Funktion NTQuerySystemInformation verwenden welche laut MSDN per Run-Time Dynamic Linking geladen werden muss da keine entsprechende Lib dafür existiert. Gesagt getan //typedef DWORD (*NTQUERYSYSTEMINFORMATION)(SYSTEM_INFORMATION_CLASS, void*, ULONG, ULONG*); typedef DWORD (*NTQUERYSYSTEMINFORMATION)(DWORD, DWORD*, DWORD, void*); NTQUERYSYSTEMINFORMATION NtQuerySystemInformation; HMODULE hLib = LoadLibrary("Ntdll.dll"); NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hLib,"NtQuerySystemInformation"); [/PHP] Leider bedkomme ich beim Aufrufen der Funktion später aber einen Fehler das das Value von ESP nicht richtig gespeichert wurde und das normalerweise geschähe wenn man eine Funktion mit einer bestimmten calling convention mit einer anderen aufruft. Das typedef von NtQuerySystemInformation bzw. dessen Parameter hab ich so aus einem anderen Code den ich im Internet gefunden habe. Wenn ich die erste auskommentierte Variante bentutzte welche exakt die Parameter aus der MSDN verwendet kommt aber der selbe Fehler. Hat jemand eine Idee dazu bzw. wie lege ich beim Run-Time Dynamic Linking die calling convention fest (geht das überhaupt?)? Zitieren
Klotzkopp Geschrieben 8. August 2007 Geschrieben 8. August 2007 Das hat mit Runtime Dynamic Linking erst mal nichts zu tun. Die Calling Convention ist Teil des Funktionszeigertyps: typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG); Vermutlich ist in deinem Project __stdcall nicht die Default-Calling-Convention. Zitieren
Guybrush Threepwood Geschrieben 8. August 2007 Autor Geschrieben 8. August 2007 OMG stimmt ja :upps Danke schön, die Frage ist mir ja direkt schon peinlich... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.