GetModuleFileNameW-Funktion (libloaderapi.h)
Ruft den vollqualifizierten Pfad für die Datei ab, die das angegebene Modul enthält. Das Modul muss vom aktuellen Prozess geladen worden sein.
Um die Datei für ein Modul zu suchen, das von einem anderen Prozess geladen wurde, verwenden Sie die GetModuleFileNameEx--Funktion.
Syntax
DWORD GetModuleFileNameW(
[in, optional] HMODULE hModule,
[out] LPWSTR lpFilename,
[in] DWORD nSize
);
Parameter
[in, optional] hModule
Ein Handle für das geladene Modul, dessen Pfad angefordert wird. Wenn dieser Parameter NULL-ist, ruft GetModuleFileName den Pfad der ausführbaren Datei des aktuellen Prozesses ab.
Die GetModuleFileName--Funktion ruft nicht den Pfad für Module ab, die mithilfe des LOAD_LIBRARY_AS_DATAFILE-Flags geladen wurden. Weitere Informationen finden Sie unter LoadLibraryEx.
[out] lpFilename
Ein Zeiger auf einen Puffer, der den vollqualifizierten Pfad des Moduls empfängt. Wenn die Länge des Pfads kleiner als die Größe ist, die der nSize Parameter angibt, wird die Funktion erfolgreich ausgeführt, und der Pfad wird als null-beendete Zeichenfolge zurückgegeben.
Wenn die Länge des Pfads die Größe überschreitet, die der
Windows XP: Die Zeichenfolge wird an nSize Zeichen abgeschnitten und ist nicht null beendet.
Die zurückgegebene Zeichenfolge verwendet dasselbe Format, das beim Laden des Moduls angegeben wurde. Daher kann der Pfad ein langer oder kurzer Dateiname sein und das Präfix "\?" verwenden. Weitere Informationen finden Sie unter Benennen einer Datei.
[in] nSize
Die Größe des lpFilename- Puffers in WCHARs-.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Länge der Zeichenfolge, die in den Puffer kopiert wird, in Zeichen, nicht einschließlich des endenden Nullzeichens. Wenn der Puffer zu klein ist, um den Modulnamen zu speichern, wird die Zeichenfolge abgeschnitten, um nSize Zeichen einschließlich des endenden Nullzeichens zu speichern, gibt die Funktion nSizezurück, und die Funktion legt den letzten Fehler auf ERROR_INSUFFICIENT_BUFFERfest.
Windows XP: Wenn der Puffer zu klein ist, um den Modulnamen aufzunehmen, gibt die Funktion nSize zurück, und der letzte Fehlercode wird nicht geändert. Wenn nSize null ist, ist der Rückgabewert Null und der letzte Fehlercode wird nicht geändert.
Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Wenn eine DLL in zwei Prozessen geladen wird, kann sich der Dateiname in einem Prozess vom Dateinamen im anderen Prozess unterscheiden.
Die globale Variable _pgmptr
wird automatisch in den vollständigen Pfad der ausführbaren Datei initialisiert und kann verwendet werden, um den vollständigen Pfadnamen einer ausführbaren Datei abzurufen.
Beispiele
Ein Beispiel finden Sie unter Installieren eines Dienst-.
Anmerkung
Der libloaderapi.h-Header definiert GetModuleFileName als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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 |
---|---|
mindestens unterstützte Client- | Windows XP [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | libloaderapi.h (include Windows.h) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |