共用方式為


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。

意義
MUI_QUERY_TYPE
FILEMUIINFOdwFileType 成員中擷取下列其中一個值:
  • MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL:指定的輸入檔沒有資源組態數據。 因此,它不是 LN 檔案,也不是語言特定的資源檔。 這種類型的檔案是舊版可執行檔的一般。 如果指定這個文件類型,函式將不會擷取其他類型的實用資訊。
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN。 輸入檔是 LN 檔案。
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI。 輸入檔是與 LN 檔案相關聯的語言特定資源檔。
MUI_QUERY_CHECKSUM
擷取 FILEMUIINFOpChecksum 成員中輸入檔的資源總和檢查碼。 如果輸入檔沒有資源組態數據,結構中的這個成員會包含 0。
MUI_QUERY_LANGUAGE_NAME
擷取與輸入檔相關聯的語言。 針對特定語言的資源檔,此旗標會要求相關聯的語言。 針對 LN 檔案,此旗標會要求模組的最終後援資源語言,該語言可以是 LN 檔案或 LN 檔案的資源組態數據所參考的個別語言特定資源檔。 如需詳細資訊,請參閱<備註>一節。
MUI_QUERY_RESOURCE_TYPES
擷取語言特定資源檔和 LN 檔案中的資源類型清單,如資源組態數據中所指定。 如需存取這項資訊的方式,請參閱一節。

[in] pcwszFilePath

以 Null 結尾的字串指標,指出檔案的路徑。 檔案通常是 LN 檔案或語言特定的資源檔。 如果不是下列其中一種類型,則函式擷取的唯一顯著值是MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL。 如果已設定MUI_QUERY_RESOURCE_TYPES旗標,函式只會擷取此值。

[in, out, optional] pFileMUIInfo

緩衝區的指標,其中包含 FILEMUIINFO 結構中的檔案資訊,而且可能位於該結構之後的數據中。 信息緩衝區可能必須大於結構本身的大小。 根據旗標設定,函式可以在結構中擷取的位移儲存結構之後相當多的資訊。 如需詳細資訊,請參閱<備註>一節。

或者,如果應用程式設定為 0,則應用程式可以將此參數設定為 NULL。 在此案例中,函式會擷取 在 azurefileMUIInfo 中資訊緩衝區的必要大小。

注意如果 pFileMUIInfo 的值不是 NULL,dwSize 成員必須設定為 FILEMUIINFO 結構的大小, (包括資訊緩衝區) ,而 dwVersion 成員必須設定為目前版本的 0x001。
 

[in, out] pcbFileMUIInfo

pFileMUIInfo 所指示之檔案信息的緩衝區大小指標,以位元組為單位。 從函式成功傳回時,此參數會包含所擷取檔案資訊緩衝區的大小,以及包含它的 FILEMUIINFO 結構。

或者,如果應用程式在 pFileMUIInfo 中設定 NULL,應用程式可以將此參數設定為 0。 在此案例中,函式會擷取 在 azurefileMUIInfo 中所需的檔案資訊緩衝區大小。 若要配置正確的記憶體數量,此值應該新增至 FILEMUIINFO 結構本身的大小。

注意如果 pFileMUIInfo 的值不是 NULL,此參數的值必須符合 FILEMUIINFOdwSize 成員值。
 

傳回值

如果成功或 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 成員包含語言特定資源檔中包含的資源名稱陣列的位移。
如果輸入檔是 LN 檔案,函式會填入上述所有結構成員。 此外,它會填入下列成員:
  • dwTypeIDMainOffset 成員包含 LN 檔案中包含的資源識別子陣列的位移。
  • dwTypeIDMainSize 成員包含 LN 檔案資源識別碼陣列的大小。
  • dwTypeNameMainOffset 成員包含檔案中包含的資源名稱陣列的位移。
以下是存取 LN 檔案中資源識別子數位的範例程式代碼。
DWORD *pdwTypeID = reinterpret_cast<DWORD *>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeIDMainOffset);

注意 以相同方式存取語言特定資源的清單。
 
以下是存取 LN 檔案中資源名稱的多字串陣列的範例程式代碼。
LPWSTR lpszNames = reinterpret_cast<LPWSTR>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeNameMainOffset);

注意 以相同方式存取語言特定資源的清單。
 
每個程式代碼範例都會使用兩個重新解譯轉換。 首先,程式代碼會轉換成 BYTE* ,以便以位元組為單位完成位移的指標算術。 然後,程式代碼會將產生的指標轉換成所需的型別。

另一種方法是撰寫下列程序代碼,而不是範例中顯示的程序代碼。 效果相同,而且選擇完全是樣式的其中一種。

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

另請參閱

FILEMUIINFO

GetThreadUILanguage

多語系使用者介面

多語系使用者介面函式

SetThreadPreferredUILanguages

SetThreadUILanguage