GetModuleFileNameA-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 GetModuleFileNameA(
[in, optional] HMODULE hModule,
[out] LPSTR 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 aufzunehmen, gibt die Funktion nSize zurück. Der letzte Fehlercode bleibt ERROR_SUCCESS. Wenn nSize null ist, ist der Rückgabewert 0, und der letzte Fehlercode ist ERROR_SUCCESS.
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
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 |