GetModuleFileNameExA-Funktion (psapi.h)
Ruft den vollqualifizierten Pfad für die Datei ab, die das angegebene Modul enthält.
Syntax
DWORD GetModuleFileNameExA(
[in] HANDLE hProcess,
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Parameter
[in] hProcess
Ein Handle für den Prozess, der das Modul enthält.
Das Handle muss über die Zugriffsrechte PROCESS_QUERY_INFORMATION und PROCESS_VM_READ verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.
Windows 10 und höher, Windows Server 2016 und höher: Wenn der hModule-Parameter NULL ist, erfordert das Handle nur PROCESS_QUERY_LIMITED_INFORMATION Zugriffsrechte.
Die GetModuleFileNameEx-Funktion ruft nicht den Pfad für Module ab, die mit dem flag LOAD_LIBRARY_AS_DATAFILE geladen wurden. Weitere Informationen finden Sie unter LoadLibraryEx.
[in, optional] hModule
Ein Handle für das Modul. Wenn dieser Parameter NULL ist, gibt GetModuleFileNameEx den Pfad der ausführbaren Datei des in hProcess angegebenen Prozesses zurück.
[out] lpFilename
Ein Zeiger auf einen Puffer, der den vollqualifizierten Pfad zum Modul empfängt. Wenn die Größe des Dateinamens größer als der Wert des nSize-Parameters ist, ist die Funktion erfolgreich, aber der Dateiname wird abgeschnitten und NULL beendet.
[in] nSize
Die Größe des lpFilename-Puffers in Zeichen.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt der Rückgabewert die Länge der in den Puffer kopierten Zeichenfolge an.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die GetModuleFileNameEx-Funktion ist in erster Linie für die Verwendung von Debuggern und ähnlichen Anwendungen konzipiert, die Modulinformationen aus einem anderen Prozess extrahieren müssen. Wenn die Modulliste im Zielprozess beschädigt oder noch nicht initialisiert ist oder sich die Modulliste während des Funktionsaufrufs ändert, weil DLLs geladen oder entladen werden, schlägt GetModuleFileNameEx möglicherweise fehl oder gibt falsche Informationen zurück.
Verwenden Sie die GetModuleFileName-Funktion , um den Namen eines Moduls im aktuellen Prozess abzurufen. Dies ist effizienter und zuverlässiger als das Aufrufen von GetModuleFileNameEx mit einem Handle für den aktuellen Prozess.
Um den Namen des Standard ausführbaren Moduls für einen Remoteprozess abzurufen, verwenden Sie die Funktion GetProcessImageFileName oder QueryFullProcessImageName. Dies ist effizienter und zuverlässiger als das Aufrufen der GetModuleFileNameEx-Funktion mit einem NULL-Modulhandle.
Ab Windows 7 und Windows Server 2008 R2 erstellt Psapi.h Versionsnummern für die PSAPI-Funktionen. Die PSAPI-Versionsnummer wirkt sich auf den Namen aus, der zum Aufrufen der Funktion und der Bibliothek verwendet wird, die ein Programm laden muss.
Wenn PSAPI_VERSION 2 oder höher ist, wird diese Funktion in Psapi.h als K32GetModuleFileNameEx definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion in Psapi.h als GetModuleFileNameEx definiert und in Psapi.lib exportiert und Psapi.dll als Wrapper, der K32GetModuleFileNameEx aufruft.
Programme, die unter früheren Versionen von Windows sowie Windows 7 und höheren Versionen ausgeführt werden müssen, sollten diese Funktion immer als GetModuleFileNameEx aufrufen. Um die korrekte Auflösung von Symbolen sicherzustellen, fügen Sie Dem TARGETLIBS-Makro Psapi.lib hinzu, und kompilieren Sie das Programm mit -DPSAPI_VERSION=1. Laden Sie Psapi.dll, um die dynamische Laufzeitverknüpfung zu verwenden.
Beispiele
Ein Beispiel finden Sie unter Auflisten aller Module für einen Prozess.
Hinweis
Der psapi.h-Header definiert GetModuleFileNameEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | psapi.h |
Bibliothek | Kernel32.lib unter Windows 7 und Windows Server 2008 R2; Psapi.lib (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.lib unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP |
DLL | Kernel32.dll unter Windows 7 und Windows Server 2008 R2; Psapi.dll (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.dll unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP |