GetFileMUIPath 関数 (winnls.h)
指定された LN ファイルに関連付けられているすべての言語固有のリソース ファイルへのパスを取得します。 アプリケーションは、各リソース ファイルのパスを取得するために、この関数を繰り返し呼び出す必要があります。
構文
BOOL GetFileMUIPath(
[in] DWORD dwFlags,
[in] PCWSTR pcwszFilePath,
[in, out, optional] PWSTR pwszLanguage,
[in, out] PULONG pcchLanguage,
[out, optional] PWSTR pwszFileMUIPath,
[in, out] PULONG pcchFileMUIPath,
[in, out] PULONGLONG pululEnumerator
);
パラメーター
[in] dwFlags
言語形式とフィルター処理を識別するフラグ。 次のフラグは、 pwszLanguage で示される言語の形式を指定します。 フラグは相互に排他的であり、既定値はMUI_LANGUAGE_NAME。
値 | 意味 |
---|---|
|
言語識別子形式で 言語 文字列を取得します。 |
|
言語名の形式で 言語 文字列を取得します。 |
次のフラグは、 pwszLanguage が NULL に設定されている場合に、言語固有のリソース ファイルの検索に使用する関数のフィルター処理を指定します。 フィルター 処理フラグは相互に排他的であり、既定値はMUI_USER_PREFERRED_UI_LANGUAGES。
次のフラグを使用すると、 ユーザーは pcwszFilePath で指定されたファイルの種類を示すことができます。これにより、関数は".mui" をファイル名に追加する必要があるかどうかを判断できます。 フラグは相互に排他的です。 アプリケーションが両方のフラグを渡すと、関数は失敗します。 アプリケーションがどちらのフラグも渡していない場合、関数はルート フォルダー内のファイルをチェックしてファイルの種類を確認し、ファイルの名前付けを決定します。
[in] pcwszFilePath
ファイル パスを指定する null で終わる文字列へのポインター。 パスは、既存の LN ファイル、または .txt、.inf、.msc ファイルなどのファイル用です。 ファイルが LN ファイルの場合、関数は関連する言語固有のリソースを含むファイルを検索します。 他のすべての種類のファイルに対して、 関数は、指定されたファイル名とパスに正確に対応するファイルをシークします。 アプリケーションでは、MUI_LANG_NEUTRAL_PE_FILE または MUI_NON_LANG_NEUTRAL_FILE フラグを使用して、ファイルの種類のチェックの動作を上書きできます。 詳細については、「解説」を参照してください。
[in, out, optional] pwszLanguage
言語文字列を含むバッファーへのポインター。 入力時に、このバッファーには、 dwFlags の設定に応じて、アプリケーションが言語固有のリソース ファイルを検索する必要がある言語識別子または言語名が含まれます。 関数から正常に戻った場合、このパラメーターには、関数が見つけた言語固有のリソース ファイルの言語が含まれます。
または、アプリケーションでこのパラメーターを NULL に設定し、 pcchLanguage によって参照される値を 0 に設定することもできます。 この場合、関数は pcchLanguage で必要なバッファー サイズを取得します。
[in, out] pcchLanguage
pwszLanguage で示される言語文字列のバッファー サイズへのポインター (文字数)。 アプリケーションでこのパラメーターによって参照される値を 0 に設定し、pwszLanguage に NULL を渡す場合、必要なバッファー サイズは pcchLanguage で返され、返されるバッファー サイズは常にLOCALE_NAME_MAX_LENGTHされます。通常、関数は複数回連続して呼び出されるためです。 関数は、連続するすべての呼び出しの言語名の正確なサイズを判断できず、後続の呼び出しでバッファーを拡張することはできません。 したがって、LOCALE_NAME_MAX_LENGTHは唯一の安全な最大値です。
[out, optional] pwszFileMUIPath
言語固有のリソース ファイルへのパスを含むバッファーへのポインター。 このバッファーをサイズMAX_PATHに割り当てることを強くお勧めします。
または、pcchFileMUIPath によって参照される値が 0 に設定されている場合、このパラメーターは NULL を取得できます。 この場合、関数は pcchFileMUIPath のファイル パス バッファーに必要なサイズを取得します。
[in, out] pcchFileMUIPath
pwszFileMUIPath で示されるファイル パスのバッファー サイズへのポインター (文字数)。 関数から正常に戻った場合、このパラメーターは取得したファイル パスのサイズを示します。 アプリケーションでこのパラメーターによって参照される値を 0 に設定した場合、関数は pwszFileMUIPath の NULL を取得し、必要なバッファー サイズは pcchFileMUIPath で返され、返されるバッファー サイズは常にMAX_PATHされます。これは、通常、関数が連続して複数回呼び出されるためです。 関数は、連続するすべての呼び出しのパスの正確なサイズを判断できず、後続の呼び出しでバッファーを拡張できません。 したがって、MAX_PATHは唯一の安全な最大値です。
[in, out] pululEnumerator
列挙変数へのポインター。 この関数を初めて呼び出す場合、変数の値は 0 である必要があります。 以降の呼び出しの間に、アプリケーションはこのパラメーターの値を変更しないでください。 関数は、使用可能なすべての言語固有のリソース ファイル パスを取得した後、 FALSE を返します。
戻り値
成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 関数が失敗した場合、出力パラメーターは変更されません。
拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。これにより、次のエラー コードが返される可能性があります。
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
- ERROR_NO_MORE_FILES。 これ以上処理するファイルはありませんでした。
注釈
この関数は、言語固有のリソース ファイルが存在することを確認しますが、正しいことを確認しません。 リソース ファイルは、「 アプリケーションのデプロイ」で説明されているストレージ規則に従って格納する必要があります。
この関数の呼び出しでMUI_LANGUAGE_ID フラグが指定されている場合は、指定された言語文字列を指定する必要があります。
先頭の 0x を含まず、長さが 4 文字の 16 進数言語識別子を使用します。
たとえば、en-US は "0409" として、en は "0009" として渡す必要があります。 返される言語文字列は、
同じ形式。
MUI_LANGUAGE_IDを指定する場合、指定された言語文字列の各 16 進値は実際の言語識別子を表す必要があります。 特に、次のロケールに対応する値を指定することはできません。
- LOCALE_USER_DEFAULT
- LOCALE_SYSTEM_DEFAULT
- LOCALE_CUSTOM_DEFAULT
- LOCALE_CUSTOM_UI_DEFAULT
- LOCALE_CUSTOM_UNSPECIFIED
通常、リソース ローダーはリソース ファイルを検索するために使用されます。 ただし、アプリケーションでは、この関数を使用してファイルを検索することもできます。 入力ファイルパスが LN ファイルの場合、関数は対応する言語固有のリソース ファイルを探すときにサフィックス ".mui" をアタッチします。
たとえば、 関数は、アプリケーションが pcwszFilePath の文字列 "C:\mydir\Example1.dll" をルート ファイル パスとして渡し、 dwFlags を MUI_LANGUAGE_NAME | に設定すると、次のファイルを取得します。MUI_USE_SEARCH_ALL_LANGUAGES:
- C:\mydir\Example1.dll
- C:\mydir\en-US\Example1.dll.mui
- C:\mydir\ja-JP\Example1.dll.mui
pcwszFilePath によって示されるファイルにリソース構成データがない場合、またはファイルが存在しない場合、関数は対応する言語固有のリソース ファイルを探すときにファイル名をそのまま残します。
たとえば、アプリケーションは pcwszFilePath の文字列 "C:\mydir\Example2.txt" をルート ファイル パスとして渡し、 dwFlags を MUI_LANGUAGE_NAME |MUI_USER_PREFERRED_UI_LANGUAGES。 ユーザーが優先する UI 言語 (順番) がカタロニア語、"ca-ES"、スペイン語 (スペイン)、"es-ES" で、次のファイルが存在する場合を考えてみましょう。
- (C:\mydir に対応するファイルはありません)
- C:\mydir\en-US\Example2.txt
- C:\mydir\en\Example2.txt
- C:\mydir\es-ES\Example2.txt
- C:\mydir\es\Example2.txt
- C:\mydir\ja-JP\Example2.txt
ターゲット ファイルとそれに関連付けられているリソース ファイルが実際に Side-by-side 対応アセンブリである場合、GetFileMUIPath を使用してリソース ファイルへのパスを取得することはできません。 MUI サポートで Side-by-side アセンブリを使用する方法の詳細については、「 多言語ユーザー インターフェイス でのアセンブリの使用」を参照してください。
C# シグネチャ
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
static extern System.Boolean GetFileMUIPath(
System.UInt32 dwFlags,
System.String pcwszFilePath,
System.Text.StringBuilder pwszLanguage,
ref System.UInt32 pcchLanguage,
System.Text.StringBuilder pwszFileMUIPath,
ref System.UInt32 pcchFileMUIPath,
ref System.UInt64 pululEnumerator
);
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winnls.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |