Einzelnen Beitrag anzeigen

Assarbad
(Gast)

n/a Beiträge
 
#5

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 14. Sep 2003, 11:55
Habe jetzt ein wenig rumgeschweinert und es zumindest zum Laufen gebracht.
Allerdings würde mich die korrekte Schreibweise noch stark interessieren.
Ich habe jetzt einfach einen Pointer auf einen Pointer deklariert.
Dann rufe ich diesen Pointer als Funktion gecastet auf:

Code:
typedef PKBDTABLES (*KBDLAYERDESCRIPTOR)(VOID);

int mymain(int argc, char* argv[])
{
   UNICODE_STRING usBla;
   ANSI_STRING asFunction;
   HANDLE hModule;
   KBDLAYERDESCRIPTOR KbdLayerDescriptor;
   PVOID *X;
   PKBDTABLES Desc;

   RtlInitUnicodeString(&usBla, L"kbdus.dll");
   LdrLoadDll(NULL, 0, &usBla, &hModule);

   RtlInitAnsiString(&asFunction, "KbdLayerDescriptor");
   LdrGetProcedureAddress(hModule, &asFunction, 0, X);
   printf("%8.8X\n", (DWORD)*X);
   Desc = ((KBDLAYERDESCRIPTOR)*X)();
   printf("%4.4X\n", *Desc->pusVSCtoVK);
   printf("%2.2X\n", Desc->bMaxVSCtoVK);
   printf("%8.8X\n", (DWORD)Desc);
}
Wie kann ich aber sofort nen korrekten Cast hinbekommen, so daß ich die
Variable "KbdLayerDescriptor" benutzen kann???
  Mit Zitat antworten Zitat