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

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

返回代码 说明
S_OK
已成功创建 HSTRING
E_POINTER
mutableBufferbufferHandleNULL
MEM_E_INVALID_SIZE
请求的 HSTRING 分配大小太大。
E_OUTOFMEMORY
未能分配 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

另请参阅

HSTRING

HSTRING_BUFFER

WindowsDeleteStringBuffer

WindowsPromoteStringBuffer