GetStringScripts 関数 (winnls.h)

指定した Unicode 文字列で使用されるスクリプトの一覧を提供します。

構文

int GetStringScripts(
  [in]            DWORD   dwFlags,
  [in]            LPCWSTR lpString,
  [in]            int     cchString,
  [out, optional] LPWSTR  lpScripts,
  [in]            int     cchScripts
);

パラメーター

[in] dwFlags

スクリプト取得のオプションを指定するフラグ。

意味
GSS_ALLOW_INHERITED_COMMON
"Qaii" (INHERITED) と "Zyyy" (COMMON) スクリプト情報を取得します。 このフラグは、未割り当て文字の処理には影響しません。 入力文字列内のこれらの文字によって、スクリプト文字列に "Zzzz" (UNASSIGNED スクリプト) が常に表示されます。
 
メモ既定では、GetStringScripts は lpString で示される入力文字列内の継承された文字または共通文字を無視します。 GSS_ALLOW_INHERITED_COMMONが設定されていない場合、入力文字列にそのような文字が含まれていても、スクリプト文字列に "Qaii" も "Zyyy" も表示されません。 GSS_ALLOW_INHERITED_COMMONが設定されていて、入力文字列に継承された文字や共通の文字が含まれている場合は、それぞれ "Qaii" と "Zyyy" がスクリプト文字列に表示されます。 「解説」を参照してください。
 

[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 に設定することもできます。 この場合、関数は lpScriptsNULL を取得し、スクリプト バッファーに必要なサイズを返します。

戻り値

成功し、 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

関連項目

DownlevelGetStringScripts

国際化ドメイン名 (IDN) の処理

各国語サポート

各国語サポート関数

VerifyScripts