GetStringScripts 関数 (winnls.h)
指定した Unicode 文字列で使用されるスクリプトの一覧を提供します。
構文
int GetStringScripts(
[in] DWORD dwFlags,
[in] LPCWSTR lpString,
[in] int cchString,
[out, optional] LPWSTR lpScripts,
[in] int cchScripts
);
パラメーター
[in] dwFlags
スクリプト取得のオプションを指定するフラグ。
値 | 意味 |
---|---|
|
"Qaii" (INHERITED) と "Zyyy" (COMMON) スクリプト情報を取得します。 このフラグは、未割り当て文字の処理には影響しません。 入力文字列内のこれらの文字によって、スクリプト文字列に "Zzzz" (UNASSIGNED スクリプト) が常に表示されます。 |
[in] lpString
分析する Unicode 文字列へのポインター。
[in] cchString
lpString で示される Unicode 文字列のサイズ (文字数)。 Unicode 文字列が null で終わる場合、アプリケーションはこのパラメーターを -1 に設定します。 アプリケーションでこのパラメーターを 0 に設定した場合、関数は lpScripts 内の null Unicode 文字列 (L"\0") を取得し、1 を返します。
[out, optional] lpScripts
この関数が 、ISO 15924 で使用される 4 文字表記を使用して、スクリプトの一覧を表す null で終わる文字列を取得するバッファーへのポインター。 各スクリプト名は 4 つのラテン文字で構成され、名前はアルファベット順に取得されます。 最後の名前を含む各名前の後にセミコロンが続きます。
または、cchScripts が 0 に設定されている場合、このパラメーターには NULL が含まれます。 この場合、関数はスクリプト バッファーに必要なサイズを返します。
[in] cchScripts
lpScripts で示されるスクリプト バッファーのサイズ (文字数)。
または、アプリケーションでこのパラメーターを 0 に設定することもできます。 この場合、関数は lpScripts で NULL を取得し、スクリプト バッファーに必要なサイズを返します。
戻り値
成功し、 cchScripts が 0 以外の値に設定されている場合は、終了する null 文字を含む、出力バッファーで取得された文字数を返します。 この関数は、入力文字列に COMMON または INHERITED 文字のみが含まれており、GSS_ALLOW_INHERITED_COMMONが設定されていない場合など、スクリプトが見つからなかったことを示す 1 を返します。 見つかった各スクリプトが 5 文字 (4 文字 + 区切り記号) を追加することを考えると、単純な算術演算では、スクリプト数が (return_code - 1) / 5 として提供されます。
関数が成功し、 cchScripts の値が 0 の場合、スクリプト バッファーに必要なサイズ (終端の null 文字を含む) が返されます。 スクリプトの数は上記の通りです。
成功しなかった場合、この関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。このエラー コードは、次のいずれかのエラー コードを返すことができます。
- ERROR_BADDB。 関数がデータにアクセスできませんでした。 この状況は、通常は発生するべきではありません。通常は、インストールが正しくないことを示します。ディスクの問題などです。
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
- ERROR_INVALID_FLAGS。 フラグに指定された値が無効です。
- ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。
注釈
この関数は、 国際化ドメイン名 (IDN) に関連するセキュリティの問題を軽減する戦略の一環として役立ちます。
スクリプトの決定は、 の http://www.unicode.org/Public/4.1.0/ucd/Scripts.txtUnicode Consortium によって発行されたスクリプト値に基づいています。ただし、割り当てられていない文字の値は、"Zyy" (COMMON) ではなく値 "Zzzz" (UNASSIGNED) になります。
この関数の動作の例をいくつか次に示します。
入力文字列 | dwFlags | lpScripts | スクリプト | |
---|---|---|---|---|
Microsoft.com | 0 | Latn; | ラテン語 | |
Microsoft.com | GSS_ALLOW_INHERITED_COMMON | Latn;Zyyy; | ラテン + 共通 | |
Niño | 004E 0069 0241 006F | GSS_ALLOW_INHERITED_COMMON | Latn; | ラテン語 |
チルダ付きラテン小文字 N を使用します | ||||
Niño | 004E 0069 006E 0303 006F | GSS_ALLOW_INHERITED_COMMON | Latn;Qaii; | ラテン語 + 継承 |
チルダの組み合わせを使用する | ||||
Spооf | 0053 0070 043e 043e 0066 | 0 | Latn;Cyrl; | ラテン語 + キリル文字 |
キリル文字の小文字 O を使用します | ||||
| U + f000 | 0 | Zzzz; | [Unassigned] \(未割り当て) |
| U + f000 | GSS_ALLOW_INHERITED_COMMON | Zzzz; | [Unassigned] \(未割り当て) |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winnls.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |