次の方法で共有


WindowsPromoteStringBuffer 関数 (winstring.h)

指定したHSTRING_BUFFERから HSTRING を作成します。

構文

HRESULT WindowsPromoteStringBuffer(
  HSTRING_BUFFER bufferHandle,
  HSTRING        *string
);

パラメーター

bufferHandle

種類: [入力] HSTRING_BUFFER

新しい HSTRING に使用するバッファー。 HSTRING_BUFFERを作成するには、WindowsPreallocateStringBuffer 関数を使用する必要があります。

string

型: [out] HSTRING*

bufferHandle の内容を含む新しく作成された HSTRING

戻り値

種類: HRESULT

この関数は、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK
HSTRING が正常に作成されました。
E_POINTER
stringNULL です
E_INVALIDARG
bufferHandleWindowsPreallocateStringBuffer 関数を呼び出して作成されなかったか、呼び出し元が bufferHandle で終端の NULL 文字を上書きしました。

注釈

WindowsPromoteStringBuffer 関数を使用して、HSTRING_BUFFERから新しい HSTRING を作成します。 WindowsPromoteStringBuffer 関数を呼び出すと、変更可能なバッファーが変更できない HSTRING に変換されます。 WindowsPreallocateStringBuffer 関数を使用して、HSTRING_BUFFERを作成します。

WindowsPromoteStringBuffer 呼び出しが失敗した場合は、WindowsDeleteStringBuffer 関数を呼び出して、変更可能なバッファーを破棄できます。

WindowsPromoteStringBuffer 関数の各呼び出しは、WindowsDeleteString の対応する呼び出しと一致する必要があります。

次のコード例では、 WindowsPromoteStringBuffer 関数の使用方法を示します。

#include <winstring.h>

int main()
{
    HSTRING hString = NULL;
    HSTRING_BUFFER hStringBuffer = NULL;
    PWSTR strBuffer = NULL;

    HRESULT hr = WindowsPreallocateStringBuffer(10, &strBuffer, &hStringBuffer);

    if (SUCCEEDED(hr))
    {
        // Fill in the buffer

        hr = WindowsPromoteStringBuffer(hStringBuffer, &hString);

        if (SUCCEEDED(hr))
        {
            WindowsDeleteString(hString);
        }
        else
        {
            WindowsDeleteStringBuffer(hStringBuffer);
        }
    }
}

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー winstring.h
Library RuntimeObject.lib
[DLL] ComBase.dll

こちらもご覧ください

HSTRING

HSTRING_BUFFER

WindowsDeleteString

WindowsDeleteStringBuffer

WindowsPreallocateStringBuffer