WindowsPreallocateStringBuffer 函数 (winstring.h)
分配可变字符缓冲区以用于 HSTRING 创建。
语法
HRESULT WindowsPreallocateStringBuffer(
UINT32 length,
WCHAR **charBuffer,
HSTRING_BUFFER *bufferHandle
);
参数
length
类型:[in] UINT32
要分配的缓冲区的大小。 值为零对应于空字符串。
charBuffer
类型:[out] WCHAR**
保存字符的可变缓冲区。 请注意,缓冲区已包含终止 NULL 字符。
bufferHandle
类型:[out] HSTRING_BUFFER*
预分配的字符串缓冲区;如果长度为 0,则为 NULL。
返回值
类型: HRESULT
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
已成功创建 HSTRING。 |
|
mutableBuffer 或 bufferHandle 为 NULL。 |
|
请求的 HSTRING 分配大小太大。 |
|
未能分配 HSTRING。 |
注解
使用 WindowsPreallocateStringBuffer 函数创建一个可变字符缓冲区,可以在将它提交到不可变 HSTRING 之前对其进行操作。 使用字符串填充 mutableBuffer 后,使用 bufferHandle 参数调用 WindowsPromoteStringBuffer 函数以创建 HSTRING。 必须将 长度 完全相同的字符写入缓冲区。 Windows 10版本 1803、Windows Server 版本 1803 及更高版本:允许在长度字符后写入 null 终止符。
调用 WindowsDeleteStringBuffer 函数以在升级之前放弃可变缓冲区。 如果缓冲区已通过调用 WindowsPromoteStringBuffer 升级,请调用 WindowsDeleteString 函数来放弃该字符串。 如果 WindowsPromoteStringBuffer 调用失败,可以调用 WindowsDeleteStringBuffer 函数来放弃可变缓冲区。
示例
以下代码示例演示如何使用 WindowsPreallocateStringBuffer 函数。
#include <winstring.h>
int main()
{
HSTRING hString = NULL;
HSTRING_BUFFER hStringBuffer = NULL;
PWSTR strBuffer = NULL;
HRESULT hr = WindowsPreallocateStringBuffer(10, &strBuffer, &hStringBuffer);
if (SUCCEEDED(hr))
{
CopyMemory(strBuffer, L"1234567890", 10 * sizeof(wchar_t));
hr = WindowsPromoteStringBuffer(hStringBuffer, &hString);
}
WindowsDeleteString(hString);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | winstring.h |
Library | RuntimeObject.lib |
DLL | ComBase.dll |