GetProcAddress
-
Hallo zusammen,
Ich rufe die folgende Funktion bei mir auf (Direktaufruf ist leider nicht möglich):
typedef BOOL (WINAPI *PGETUSERNAMEEX) (EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize); PGETUSERNAMEEX pFunc; HMODULE hMod = LoadLibrary("secur32.dll"); pFunc = (PGETUSERNAMEEX)GetProcAddress(hMod, "GetUserNameExA"); (*pFunc)(NameDisplay, buffer, &size);
In der Zeile "(*pFunc)(NameDisplay, buffer, &size)" gibt es jedoch immer eine Zugriffsverletzung, leider weiss ich einfach nicht warum. Die Deklaration der Funktion scheint in Ordnung zu sein. pFunc ist ebenfalls auch nicht leer...
-
Bist Du schon mal auf die Idee gekommen, dass
1. LoadLibrary NULL returniert
2. GetProcAddress NULL returniertWelches OS hast Du?
-
Ja das bin ich tatsächlich
Aber weder LoadLibrary noch GetProcAddress gibt NULL zurück, Debugger sei dank.
Ich nutze Windows Vista.
-
Welche Parameter übergibst du denn konkret, d.h. welchen Datentyp und welchen Inhalt haben die 3 Variablen?
-
LPTSTR buffer = ""; DWORD size = MAX_PATH; (*pFunc)(NameDisplay, buffer, &size);
Beim "normalen" Aufruf GetUserNameEx gibts mit diesen Parametern keine Probleme und ich kriege den gewünschten Wert zurück.
-
Bin zwar im Moment zu Hause am privaten PC, aber ich glaube ich habe den Fehler gefunden:
statt LPTSTR buffer = "";
sollte stehen: LPTSTR buffer = new TCHAR[MAX_PATH];Hoffe das dies die Lösung ist
-
Korrket. Noch einfacher:
TCHAR buffer[MAX_PATH]; DWORD size = MAX_PATH; (*pFunc)(NameDisplay, buffer, &size);