GetModuleBaseNameA-Funktion (psapi.h)

Ruft den Basisnamen des angegebenen Moduls ab.

Syntax

DWORD GetModuleBaseNameA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpBaseName,
  [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.

[in, optional] hModule

Ein Handle für das Modul. Wenn dieser Parameter NULL ist, gibt diese Funktion den Namen der Datei zurück, die zum Erstellen des aufrufenden Prozesses verwendet wird.

[out] lpBaseName

Ein Zeiger auf den Puffer, der den Basisnamen des Moduls empfängt. Wenn der Basisname länger als die maximale Anzahl von Zeichen ist, die vom nSize-Parameter angegeben werden, wird der Basisname abgeschnitten.

[in] nSize

Die Größe des lpBaseName-Puffers in Zeichen.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt der Rückgabewert die Länge der in den Puffer kopierten Zeichenfolge in Zeichen an.

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

Hinweise

Die GetModuleBaseName-Funktion ist in erster Linie für die Verwendung durch Debugger und ähnliche 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 GetModuleBaseName möglicherweise fehl oder gibt falsche Informationen zurück.

Um den Basisnamen eines Moduls im aktuellen Prozess abzurufen, verwenden Sie die GetModuleFileName-Funktion , um den vollständigen Modulnamen abzurufen, und verwenden Sie dann einen Funktionsaufruf, z strrchr(szmodulename, '\') . B. zum Scannen am Anfang des Basisnamens in der Modulnamenzeichenfolge. Dies ist effizienter und zuverlässiger als das Aufrufen von GetModuleBaseName mit einem Handle für den aktuellen Prozess.

Um den Basisnamen des Standard ausführbaren Moduls für einen Remoteprozess abzurufen, verwenden Sie die Funktion GetProcessImageFileName oder QueryFullProcessImageName, um den Modulnamen abzurufen, und verwenden Sie dann die strrchr Funktion, wie im vorherigen Absatz beschrieben. Dies ist effizienter und zuverlässiger als der Aufruf von GetModuleBaseName mit einem NULL-Modulhandle.

Die GetModuleBaseName-Funktion ruft nicht den Basisnamen für Module ab, die mit dem flag LOAD_LIBRARY_AS_DATAFILE geladen wurden. Weitere Informationen finden Sie unter LoadLibraryEx.

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 K32GetModuleBaseName definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion in Psapi.h als GetModuleBaseName definiert und in Psapi.lib exportiert und Psapi.dll als Wrapper, der K32GetModuleBaseName 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 GetModuleBaseName 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 Prozesse.

Hinweis

Der psapi.h-Header definiert GetModuleBaseName 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

   
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

Weitere Informationen

EnumProcesses

GetModuleFileNameEx

Modulinformationen

PSAPI-Funktionen

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l