getModuleBaseNameA 函式 (psapi.h)

擷取指定模組的基底名稱。

語法

DWORD GetModuleBaseNameA(
  [in]           HANDLE  hProcess,
  [in, optional] HMODULE hModule,
  [out]          LPSTR   lpBaseName,
  [in]           DWORD   nSize
);

參數

[in] hProcess

包含模組之進程的控制碼。

控制碼必須具有 PROCESS_QUERY_INFORMATIONPROCESS_VM_READ 存取權限。 如需詳細資訊,請參閱 處理安全性和存取權限

[in, optional] hModule

模組的控制碼。 如果此參數為 Null,此函式會傳回用來建立呼叫進程的檔案名。

[out] lpBaseName

接收模組基底名稱之緩衝區的指標。 如果基底名稱超過 nSize 參數所指定的字元數上限,則會截斷基底名稱。

[in] nSize

lpBaseName緩衝區的大小,以字元為單位。

傳回值

如果函式成功,傳回值會以字元指定複製到緩衝區的字串長度。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

GetModuleBaseName函式主要是設計供偵錯工具和類似應用程式使用,這些應用程式必須從另一個進程擷取模組資訊。 如果目標進程中的模組清單已損毀或尚未初始化,或模組清單在函式呼叫期間因載入或卸載 DLL 而變更, GetModuleBaseName 可能會失敗或傳回不正確的資訊。

若要擷取目前進程中模組的基底名稱,請使用 GetModuleFileName 函式來擷取完整的模組名稱,然後使用之類的 strrchr(szmodulename, '\') 函式呼叫來掃描模組名稱字串內的基底名稱開頭。 這比使用目前進程的控制碼呼叫 GetModuleBaseName 更有效率且更可靠。

若要擷取遠端進程的主要可執行模組基底名稱,請使用 GetProcessImageFileNameQueryFullProcessImageName 函式來擷取模組名稱,然後使用 strrchr 如上一個段落中所述的函式。 這比使用 Null 模組控制碼呼叫 GetModuleBaseName 更有效率且更可靠。

GetModuleBaseName函式不會擷取以LOAD_LIBRARY_AS_DATAFILE旗標載入的模組基底名稱。 如需詳細資訊,請參閱 LoadLibraryEx

從 Windows 7 和 Windows Server 2008 R2 開始,Psapi.h 會建立 PSAPI 函式的版本號碼。 PSAPI 版本號碼會影響用來呼叫函式的名稱,以及程式必須載入的程式庫。

如果 PSAPI_VERSION 為 2 或更新版本,此函式會定義為 Psapi.h 中的 K32GetModuleBaseName ,並在 Kernel32.lib 和 Kernel32.dll 中匯出。 如果 PSAPI_VERSION 為 1,此函式會在 Psapi.h 中定義為 GetModuleBaseName ,並在 Psapi.lib 中匯出,並 Psapi.dll 為呼叫 K32GetModuleBaseName的包裝函式。

必須在舊版 Windows 和 Windows 7 和更新版本上執行的程式應該一律將此函式呼叫為 GetModuleBaseName。 若要確保符號的正確解析度,請將 Psapi.lib 新增至 TARGETLIBS 宏,並使用 -DPSAPI_VERSION=1編譯器。 若要使用執行時間動態連結,請載入 Psapi.dll。

範例

如需範例,請參閱 列舉所有進程

注意

psapi.h 標頭會將 GetModuleBaseName 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 psapi.h
程式庫 Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;如果 Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.lib (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib
Dll Windows 7 和 Windows Server 2008 R2 上的 Kernel32.dll;如果 windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,則為 Psapi.dll (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll

另請參閱

EnumProcesses

GetModuleFileNameEx

模組資訊

PSAPI 函式

strrchr、wcsrchr、_mbsrchr、_mbsrchr_l