共用方式為


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

要求

要求 價值
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 psapi.h
連結庫 Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;Psapi.lib (if PSAPI_VERSION=1) on Windows 7 和 Windows Server 2008 R2;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib
DLL Kernel32.dll Windows 7 和 Windows Server 2008 R2;Psapi.dll Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll

另請參閱

EnumProcesses

GetModuleFileNameEx

模組資訊

PSAPI 函式

strrchr、wcsrchr、_mbsrchr、_mbsrchr_l