WindowsPromoteStringBuffer 函数 (winstring.h)

从指定的HSTRING_BUFFER创建 HSTRING

语法

HRESULT WindowsPromoteStringBuffer(
  HSTRING_BUFFER bufferHandle,
  HSTRING        *string
);

参数

bufferHandle

类型:[in] HSTRING_BUFFER

要用于新 HSTRING 的缓冲区。 必须使用 WindowsPreallocateStringBuffer 函数创建 HSTRING_BUFFER

string

类型:[out] HSTRING*

包含 bufferHandle 内容的新创建的 HSTRING

返回值

类型: HRESULT

此函数可以返回其中一个值。

返回代码 说明
S_OK
已成功创建 HSTRING
E_POINTER
stringNULL
E_INVALIDARG
bufferHandle 不是通过调用 WindowsPreallocateStringBuffer 函数创建的,或者调用方已覆盖 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