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.

Verwenden Sie die GetModuleFileNameEx-Funktion , um die Datei für ein Modul zu suchen, das von einem anderen Prozess geladen wurde.

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 mit dem flag LOAD_LIBRARY_AS_DATAFILE 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 nSize-Parameter angibt, wird die Funktion erfolgreich ausgeführt, und die Zeichenfolge wird in nSize-Zeichen abgeschnitten, einschließlich des beendenden NULL-Zeichens.

Windows XP: Die Zeichenfolge wird in nSize-Zeichen abgeschnitten und ist nicht NULL-beendet.

Die zurückgegebene Zeichenfolge verwendet das gleiche 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 TCHARs.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Länge der Zeichenfolge, die in den Puffer kopiert wird, in Zeichen, ohne das beendende NULL-Zeichen. Wenn der Puffer zu klein ist, um den Modulnamen zu speichern, wird die Zeichenfolge in nSize-Zeichen abgeschnitten, einschließlich des beendenden NULL-Zeichens, die Funktion gibt nSize zurück, und die Funktion legt den letzten Fehler auf ERROR_INSUFFICIENT_BUFFER fest.

Windows XP: Wenn der Puffer zu klein ist, um den Modulnamen zu speichern, gibt die Funktion nSize zurück, und der letzte Fehlercode wird nicht geändert. Wenn nSize null ist, ist der Rückgabewert 0, und der letzte Fehlercode wird nicht geändert.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn eine DLL in zwei Prozesse geladen wird, kann sich ihr Dateiname in einem Prozess von ihrem Dateinamen im anderen Prozess unterscheiden.

Die globale Variable _pgmptr wird automatisch mit dem 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 Diensts.

Hinweis

Der libloaderapi.h-Header definiert GetModuleFileName 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 nicht codierungsneutralem Code 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 libloaderapi.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Dynamic-Link-Bibliotheksfunktionen

GetModuleFileNameEx

GetModuleHandle

LoadLibrary

LoadLibraryEx