GetFileMUIInfo 函式 (winnls.h)
擷取檔案的資源相關信息。
語法
BOOL GetFileMUIInfo(
[in] DWORD dwFlags,
[in] PCWSTR pcwszFilePath,
[in, out, optional] PFILEMUIINFO pFileMUIInfo,
[in, out] DWORD *pcbFileMUIInfo
);
參數
[in] dwFlags
指定要擷取之資訊的旗標。 允許下列旗標的任何組合。 旗標的預設值為 MUI_QUERY_TYPE |MUI_QUERY_CHECKSUM。
值 | 意義 |
---|---|
|
在 FILEMUIINFO 的 dwFileType 成員中擷取下列其中一個值:
|
|
擷取 FILEMUIINFOpChecksum 成員中輸入檔的資源總和檢查碼。 如果輸入檔沒有資源組態數據,結構中的這個成員會包含 0。 |
|
擷取與輸入檔相關聯的語言。 針對特定語言的資源檔,此旗標會要求相關聯的語言。 針對 LN 檔案,此旗標會要求模組的最終後援資源語言,該語言可以是 LN 檔案或 LN 檔案的資源組態數據所參考的個別語言特定資源檔。 如需詳細資訊,請參閱<備註>一節。 |
|
擷取語言特定資源檔和 LN 檔案中的資源類型清單,如資源組態數據中所指定。 如需存取這項資訊的方式,請參閱一節。 |
[in] pcwszFilePath
以 Null 結尾的字串指標,指出檔案的路徑。 檔案通常是 LN 檔案或語言特定的資源檔。 如果不是下列其中一種類型,則函式擷取的唯一顯著值是MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL。 如果已設定MUI_QUERY_RESOURCE_TYPES旗標,函式只會擷取此值。
[in, out, optional] pFileMUIInfo
緩衝區的指標,其中包含 FILEMUIINFO 結構中的檔案資訊,而且可能位於該結構之後的數據中。 信息緩衝區可能必須大於結構本身的大小。 根據旗標設定,函式可以在結構中擷取的位移儲存結構之後相當多的資訊。 如需詳細資訊,請參閱<備註>一節。
或者,如果應用程式設定為 0,則應用程式可以將此參數設定為 NULL。 在此案例中,函式會擷取 在 azurefileMUIInfo 中資訊緩衝區的必要大小。
[in, out] pcbFileMUIInfo
pFileMUIInfo 所指示之檔案信息的緩衝區大小指標,以位元組為單位。 從函式成功傳回時,此參數會包含所擷取檔案資訊緩衝區的大小,以及包含它的 FILEMUIINFO 結構。
或者,如果應用程式在 pFileMUIInfo 中設定 NULL,應用程式可以將此參數設定為 0。 在此案例中,函式會擷取 在 azurefileMUIInfo 中所需的檔案資訊緩衝區大小。 若要配置正確的記憶體數量,此值應該新增至 FILEMUIINFO 結構本身的大小。
傳回值
如果成功或 FALSE,則傳回 TRUE 。否則傳回 TRUE 。 若要取得延伸的錯誤資訊,應用程式可以呼叫 GetLastError。
備註
針對MUI_QUERY_LANGUAGE_NAME旗標,此函式會從 dwLanguageNameOffset 成員的 FILEMUIINFO 開頭擷取位移,以位元組為單位。
以下是存取與輸入檔相關聯之語言名稱的範例程式代碼:
LPWSTR lpszLang = reinterpret_cast<LPWSTR>(
reinterpret_cast<BYTE*>(pFileMUIInfo) +
pFileMUIInfo->dwLanguageNameOffset);
針對 MUI_QUERY_RESOURCE_TYPES 旗標,此函式會擷取下列 FILEMUIINFO 成員中的語言特定資源檔案資訊:
- dwTypeIDMUIOffset 成員包含語言特定資源檔中包含的資源識別元陣列的位移。
- dwTypeIDMUISize 成員包含語言特定資源文件的資源標識符陣列大小。
- dwTypeNameMUIOffset 成員包含語言特定資源檔中包含的資源名稱陣列的位移。
- dwTypeIDMainOffset 成員包含 LN 檔案中包含的資源識別子陣列的位移。
- dwTypeIDMainSize 成員包含 LN 檔案資源識別碼陣列的大小。
- dwTypeNameMainOffset 成員包含檔案中包含的資源名稱陣列的位移。
DWORD *pdwTypeID = reinterpret_cast<DWORD *>(
reinterpret_cast<BYTE*>(pFileMUIInfo) +
pFileMUIInfo->dwTypeIDMainOffset);
LPWSTR lpszNames = reinterpret_cast<LPWSTR>(
reinterpret_cast<BYTE*>(pFileMUIInfo) +
pFileMUIInfo->dwTypeNameMainOffset);
另一種方法是撰寫下列程序代碼,而不是範例中顯示的程序代碼。 效果相同,而且選擇完全是樣式的其中一種。
DWORD ix = pFileMUIInfo->dwLanguageNameOffset -
offsetof(struct _FILEMUIINFO, abBuffer);
LPWSTR lpszLang = reinterpret_cast<LPWSTR>(&(pFileMUIInfo->abBuffer[ix]));
C# 簽章
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
static extern System.Boolean GetFileMUIInfo(
System.UInt32 dwFlags,
System.String pcwszFilePath,
ref FILEMUIINFO pFileMUIInfo,
ref System.UInt32 pcbFileMUIInfo
);
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winnls.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |