EnumResourceNamesExA 函式 (libloaderapi.h)

列舉與指定二進位模組相關聯的指定型別資源。 搜尋可以同時包含 LN 檔案和其相關聯的 .mui 檔案,也可以透過數種方式加以限制。

語法

BOOL EnumResourceNamesExA(
  [in, optional] HMODULE          hModule,
                 LPCSTR           lpType,
  [in]           ENUMRESNAMEPROCA lpEnumFunc,
  [in]           LONG_PTR         lParam,
  [in]           DWORD            dwFlags,
  [in]           LANGID           LangId
);

參數

[in, optional] hModule

類型:HMODULE

要搜尋之模組的句柄。 這通常是 LN 檔案,如果已設定旗標 RESOURCE_ENUM_MUI,則會在搜尋中包含適當的 .mui 檔案。 或者,這可以是 .mui 檔案或其他 LN 檔案的句柄。

如果此參數 NULL,則相當於將句柄傳遞至用來建立目前進程的模組。

lpType

類型:LPCSTR

要列舉名稱的資源類型。 或者,除了指標之外,此參數也可以 MAKEINTRESOURCE(ID),其中 ID 是代表預先定義資源類型的整數值。 如需預先定義的資源類型清單,請參閱 資源類型。 如需詳細資訊,請參閱下面的一節。

[in] lpEnumFunc

類型:ENUMRESNAMEPROC

要針對每個列舉資源名稱呼叫的回調函式指標。 如需詳細資訊,請參閱 EnumResNameProc。

[in] lParam

類型:LONG_PTR

傳遞至回調函式的應用程式定義值。 此參數可用於錯誤檢查。

[in] dwFlags

類型:DWORD

要搜尋的文件類型。 支援下列值。 請注意,如果 dwFlags 為零,則會假設指定 RESOURCE_ENUM_LN 和 RESOURCE_ENUM_MUI 旗標。

價值 意義
RESOURCE_ENUM_MUI
0x0002
在 .mui 檔案中搜尋與 hModule 所指定 LN 檔案相關聯的資源,並使用目前的語言喜好設定,遵循一般資源載入器策略(請參閱 使用者介面語言管理)。 或者,如果 LangId 為非零,則只會搜尋指定的 .mui 檔案。 通常只有在 hModule 參考 LN 檔案時,才應該使用此旗標。 如果 hModule 參考 .mui 檔案,則即使旗標的名稱,該檔案實際上仍會由 RESOURCE_ENUM_LN 旗標所涵蓋。
RESOURCE_ENUM_LN
0x0001
搜尋由 hModule所指定的檔案,不論檔案是 LN 檔案、另一種 LN 檔案或 .mui 檔案。
RESOURCE_ENUM_VALIDATE
0x0008
在執行 列舉時,對資源區段及其參考執行額外的驗證,以確保資源已正確格式化。 驗證會為每個列舉的名稱設定 260 個字元的最大限制。

[in] LangId

類型:LANGID

用來篩選 MUI 模組中搜尋的當地語系化語言。 只有在 dwFlags中設定 RESOURCE_ENUM_MUI 旗標時,才會使用此參數。 如果指定零,則符合目前語言喜好設定的所有 .mui 檔案都會包含在搜尋中,遵循一般資源載入器策略(請參閱 使用者介面語言管理)。 如果指定了非零 LangId,則搜尋的唯一 .mui 檔案會是符合指定 LangId。

傳回值

類型:BOOL

如果成功,函式 TRUE;如果函式找不到指定的類型資源,或函式因其他原因而失敗,則 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。

言論

如果 IS_INTRESOURCE(lpszType) TRUE,則 lpszType 指定指定資源類型的整數標識符。 否則,它是以 Null 結尾字串的指標。 如果字串的第一個字元是磅號 (#),則其餘字元代表指定的十進位數

資源類型的整數標識碼。 例如,字串 “#258” 代表標識碼 258。

列舉搜尋可以同時包含 LN 檔案和其相關聯的 .mui 檔案。 它可以限製為任何類型的單一二進位模組。 它也可以限制為與單一 LN 檔案相關聯的 .mui 檔案。 藉由指定 hModule 參數和非零 LangId 參數的 LN 檔案,搜尋可以限製為與該 LN 檔案和語言相關聯的唯一 .mui 檔案。

針對找到的每個資源,EnumResourceNamesEx 呼叫應用程式定義的回呼函式,lpEnumFunc,傳遞它找到的每個資源的名稱或標識符,以及傳遞給 EnumResourceNamesEx的各種其他參數。 傳遞的名稱只在回呼內有效 - 如果傳遞的名稱是字串指標,它會指向所有回呼調用重複使用的內部緩衝區。

如果資源具有標識碼,則會將標識碼傳回回回呼函式;否則,資源名稱會傳回回回呼函式。 如需詳細資訊,請參閱 EnumResNameProc。

EnumResourceNamesEx 函式會繼續列舉資源名稱,直到回呼函式傳回 FALSE 或此類型的所有資源名稱都已列舉為止。

如果 hModule 指定 LN 檔案,而且選取這兩個旗標,則列舉的名稱會對應至位於該 LN 檔案或與其相關聯的 .mui 檔案中的資源。 如果找不到 .mui 檔案,則只會傳回 LN 檔案的名稱。 找到一個適當的 .mui 檔案之後,搜尋將不會繼續,因為對應至單一 LN 檔案的所有 .mui 檔案具有相同的資源名稱。

如果 dwFlags 和 LangId 都是零,則函式的行為就像 EnumResourceNames。

如果 LangId 為非零,則只會搜尋對應至該語言識別碼的 .mui 檔案。 將不會使用語言後援。 如果該語言的 .mui 檔案不存在,列舉將會是空的(除非該語言的資源存在於 LN 檔案中,而且旗標也會設定為搜尋 LN 檔案)。

列舉永遠不會包含重複專案:如果特定語言的資源同時包含在 LN 檔案和 .mui 檔案中,則名稱只會列舉一次。

例子

如需範例,請參閱 建立資源清單。

注意

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

要求

要求 價值
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 libloaderapi.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

概念

EnumResNameProc

EnumResourceLanguagesEx

EnumResourceNames

EnumResourceTypesEx

參考

資源