HSTRING
Windows ランタイム文字列へのハンドル。
typedef HSTRING__* HSTRING;
解説
HSTRING を使用して、Windows ランタイム内の変更できない文字列を表します。
JavaScript やその他の言語 (C#、Microsoft Visual Basic など) では、HSTRING を使用して表される文字列を使用できます。 次の表は、 HSTRING が他の言語でどのように表されるかを示しています。
| プログラミング言語 | 文字列表現 |
|---|---|
| C++/WinRT | winrt::hstring クラス |
| Visual C++ コンポーネント拡張機能 (C++/CX) | Platform::String クラス |
| JavaScript | String オブジェクト |
| .NET Framework | System.String クラス |
HSTRING ハンドルは標準ハンドル型です。 意味的には、値 NULL を含む HSTRING は、0 個のコンテンツ文字と終端の NULL 文字で構成される空の文字列を表します。 0 文字の WindowsCreateString を使用して文字列を作成すると、ハンドル値 NULL が生成されます。 値 NULL を指定して WindowsGetStringRawBuffer を呼び出すと、空の文字列へのポインターの後に NUL 終了文字のみが返されます。 初期化されていない HSTRING を表す個別の値は存在しません。
WindowsCreateString 関数を呼び出して新しい HSTRING を作成し、WindowsDeleteString 関数を呼び出してバッキング文字列メモリへの参照を解放します。 WindowsCreateStringReference 関数を呼び出して、高速パス文字列とも呼ばれる文字列参照を作成します。
WindowsDuplicateString 関数を呼び出して HSTRING をコピーします。
WindowsConcatString 関数を呼び出して、2 つの文字列を連結します。
WindowsGetStringRawBuffer 関数を呼び出して、バッキング文字列メモリにアクセスします。
HSTRING では、埋め込み NUL 文字を格納して使用できます。 予期しない結果が発生する可能性がある関数を使用する前 に、WindowsStringHasEmbeddedNull 関数を使用して埋め込み NUL 文字を確認します。 たとえば、ほとんどのWindows関数は入力パラメーターとして LPCWSTR を使用し、最初の NUL が検出されるまで文字列の長さを計算します。
バッキング文字列は不変であり、null で終わる必要があります。 コードを呼び出すと、 WindowsCreateStringReference 関数を使用して文字列参照が作成され、バッキング文字列表現を含むメモリが呼び出し元によって所有されます。 Windows ランタイムは、元の文字列の内容に依存して変更されません。 Windows ランタイムに文字列参照を渡すときは、呼び出し元の責任で、文字列の内容が変更されず、NUL が呼び出しの期間中終了します。 Windows ランタイムは、呼び出しが戻るときに文字列参照へのすべての参照を解放します。
out パラメーターとして HSTRING を受け取る場合は、処理が完了したら、ハンドルを NULL に設定することをお勧めします。
変更できない HSTRING を作成するために使用できる変更可能な文字列バッファーを割り当てるには、WindowsPreallocateStringBuffer 関数を呼び出します。 バッファーの設定が完了したら、 WindowsPromoteStringBuffer 関数を呼び出して HSTRING を作成します。 この 2 フェーズ構築パターンにより、"文字列ビルダー" に似た機能が可能になります。
必要条件
| 要件 | 値 |
|---|---|
| サポートされている最小のクライアント |
Windows 8 |
| サポートされている最小のサーバー |
Windows Server 2012 |
| Header |
|
関連項目