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
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
已成功创建 HSTRING。 |
|
string 为 NULL。 |
|
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 |