CompareStringEx

名前で指定されたロケールについて、2 つの Unicode(ワイド文字)文字列を比較する。注意: CompareStringEx を誤用するとアプリケーションのセキュリティを損なう可能性がある。

CompareStringEx lpLocaleName, dwCmpFlags, lpString1, cchCount1, lpString2, cchCount2, lpVersionInformation, lpReserved, lParam

lpLocaleName : [wstr] ロケール名へのポインタ、または以下の定義済み値のいずれか。
dwCmpFlags : [int] 
lpString1 : [wstr] 比較する 1 つ目の文字列へのポインタ。
cchCount1 : [int] lpString1 が示す文字列の長さ(終端 null 文字を除く)。文字列が null 終端の場合、アプリケーションは負の値を指定できる。その場合、関数が長さを自動的に決定する。
lpString2 : [wstr] 比較する 2 つ目の文字列へのポインタ。
cchCount2 : [int] lpString2 が示す文字列の長さ(終端 null 文字を除く)。文字列が null 終端の場合、アプリケーションは負の値を指定できる。その場合、関数が長さを自動的に決定する。
lpVersionInformation : [var] 関連する NLS 機能に関するバージョン情報を含む NLSVERSIONINFOEX 構造体へのポインタ。通常は GetNLSVersionEx で取得する。Windows Vista、Windows 7: 予約済み。NULL に設定しなければならない。
lpReserved : [intptr] 予約済み。NULL に設定しなければならない。
lParam : [intptr] 予約済み。0 に設定しなければならない。

(プラグイン / モジュール : kernel32.dll)

解説

名前で指定されたロケールについて、2 つの Unicode(ワイド文字)文字列を比較する。注意: CompareStringEx
を誤用するとアプリケーションのセキュリティを損なう可能性がある。

[戻り値]
成功した場合は以下の値のいずれかを返す。C ランタイムの文字列比較慣習を維持するため、ゼロ以外の戻り値から 2
を引くことができる。そうすると <0、==0、>0 の意味が C ランタイムと一致する。
(以下省略)

[備考]
CompareString と CompareStringEx はいずれも、dwCmpFlags が 0 または
NORM_IGNORECASE に設定され、cchCount1 と cchCount2 が -1 に設定され、ロケールが言語圧縮(例:
伝統的なスペイン語ソートで "ch" を 1
文字として扱うような)をサポートしない場合に最大速度で実行されるように最適化されている。CompareString と
CompareStringEx はいずれも、比較時にアラビア語のカシーダを無視する。そのため、カシーダの有無以外が同一である 2
つの文字列については、関数は CSTR_EQUAL を返す。
アプリケーションがソート関数で NORM_IGNORENONSPACE および NORM_IGNORECASE
フラグを使用すると、文字列比較に干渉する可能性がある。これは、ロケールが非スペーシング文字や大文字小文字をサポートしないが、他の重要な操作を処理するために同等のウェイトレベルを使う場合に起こり得る。そのような場合、アプリケーションは
LINGUISTIC_IGNOREDIACRITIC および LINGUISTIC_IGNORECASE
フラグを使うべきである。これらのフラグは、大文字小文字や発音区別記号を使うコードポイントのソートに言語学的に適切な結果を提供し、他のコードポイントには影響を与えない。Windows
Vista 以降: CompareString と CompareStringEx
はカスタムロケールからデータを取得できる。データはコンピュータ間やアプリケーションの実行間で同じであることが保証されない。データを永続化または送信する必要がある場合は、Using
Persistent Locale Data を参照。
Windows 8 以降: アプリケーションが Windows.Globalization 名前空間からこの関数に言語タグを渡す場合、まず
ResolveLocaleName を呼んでタグを変換する必要がある。Windows 8 以降: CompareStringEx は
Stringapiset.h で宣言されている。Windows 8 より前では Winnls.h で宣言されていた。注意: ソート動作は
Windows のリリース間で変わることがある。例えば新しい Unicode
コードポイントが作成されることがある。ソートバージョンが変わったかどうかは GetNlsVersionEx で確認する。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs