AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddress()
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddress()

Ein Thema von Assarbad · begonnen am 14. Sep 2003 · letzter Beitrag vom 15. Sep 2003
Antwort Antwort
Seite 2 von 2     12   
anku

Registriert seit: 13. Sep 2003
51 Beiträge
 
#11

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 14. Sep 2003, 14:00
Probier vielleicht mal etwas der Art:
Code:
  KBDLAYERDESCRIPTOR* KbdLayerDescriptor;
und
Code:
LdrGetProcedureAddress(hModule, &asFunction, 0, KbdLayerDescriptor);
Desc = (*KbdLayerDescriptor)();
mfg

anku
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#12

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 14. Sep 2003, 14:07
Pointertypen auf die Funktion hatte ich auch schon probiert ... klappte bei mir zumindest nicht. Dafür klappt es aber mit deinem Vorschlag:

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);
   printf("HMODULE %8.8X\n", hModule);
   
   RtlInitAnsiString(&asFunction, "KbdLayerDescriptor");
   status=LdrGetProcedureAddress(hModule, &asFunction, 0, (void **)&KbdLayerDescriptor);

   printf("Status %8.8X\n", status);
   printf("Entrypoint %8.8X\n", (DWORD)KbdLayerDescriptor);
   Desc = (KbdLayerDescriptor)();
   printf("%4.4X\n", *Desc->pusVSCtoVK);
   printf("%2.2X\n", Desc->bMaxVSCtoVK);
   printf("%8.8X\n", (DWORD)Desc);

   LdrUnloadDll(hModule);
   return 0;
}
Danke euch allen (und natürlich besonders Nico )

@anku: Bei deinem Vorschlag gibt es auch Fehler :-/ ... leider
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 14. Sep 2003, 16:37
OUT PVOID *FunctionAddress

das ist wohl gleichbedeutend mit
void *&FunctionAddress (c++)
oder
void **FunctionAddress (c)
weil PVOID ein void* ist.


out sieht nach Borland C++ aus oder?
und ist damit ein initialisiertes var - also per referenz.

daher muss man
zuerst auf (void**) oder (PVOID*) casten,
und dann mit & die Addresse der Funktion übergeben
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#14

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 14. Sep 2003, 16:50
Zitat von Dezipaitor:
out sieht nach Borland C++ aus oder?
und ist damit ein initialisiertes var - also per referenz.
OUT ist in ein leeres Macro und dient nur als Hint (dass die Variable vor der Übergabe nicht initialisiert werden muss). Es erzeugt auch keine 'automatische' Referenz (wie var/out in Delphi Language).

Gruss Nico
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#15

Re: Kleine Nachhilfe in C erbeten -> LdrGetProcedureAddre

  Alt 15. Sep 2003, 22:48
sowas ist ja cool
THX
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz