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 PROCESS_QUERY_INFORMATION und PROCESS_VM_READ Zugriffsrechte verfügen. Weitere Informationen finden Sie unter Prozesssicherheits- und Zugriffsberechtigungen.
[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 durch den 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 fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Die GetModuleBaseName--Funktion ist in erster Linie für die Verwendung durch Debugger und ähnliche Anwendungen vorgesehen, 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, da DLLs geladen oder entladen werden, GetModuleBaseName fehlschlagen oder falsche Informationen zurückgeben.
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 wie strrchr(szmodulename, '\')
, um den Anfang des Basisnamens innerhalb der Modulnamenzeichenfolge zu scannen. Dies ist effizienter und zuverlässiger als das Aufrufen GetModuleBaseName- mit einem Handle für den aktuellen Prozess.
Verwenden Sie zum Abrufen des Basisnamens des haupt ausführbaren Moduls für einen Remoteprozess die GetProcessImageFileName oder QueryFullProcessImageName-Funktion, um den Modulnamen abzurufen, und verwenden Sie dann die strrchr
Funktion wie im vorherigen Absatz beschrieben. Dies ist effizienter und zuverlässiger als das Aufrufen GetModuleBaseName- mit einem NULL-Modulhandle.
Die GetModuleBaseName--Funktion ruft nicht den Basisnamen für Module ab, die mit dem LOAD_LIBRARY_AS_DATAFILE-Flag geladen wurden. Weitere Informationen finden Sie unter LoadLibraryEx.
Ab Windows 7 und Windows Server 2008 R2 richtet Psapi.h Versionsnummern für die PSAPI-Funktionen ein. 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 als K32GetModuleBaseName in Psapi.h definiert und in Kernel32.lib und Kernel32.dllexportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion als GetModuleBaseName in Psapi.h definiert und in Psapi.lib exportiert und Psapi.dll als Wrapper, der K32GetModuleBaseNameaufruft.
Programme, die in früheren Versionen von Windows und Windows 7 und höher ausgeführt werden müssen, sollten diese Funktion immer als GetModuleBaseNameaufrufen. Um die richtige Auflösung von Symbolen sicherzustellen, fügen Sie psapi.lib dem TARGETLIBS Makro hinzu und kompilieren Sie das Programm mit -DPSAPI_VERSION=1. Laden Sie Psapi.dll, um laufzeitbasierte dynamische Verknüpfungen zu verwenden.
Beispiele
Ein Beispiel finden Sie unter Aufzählen aller Prozesse.
Anmerkung
Der psapi.h-Header definiert GetModuleBaseName 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- | psapi.h |
Library | 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 |