WindowsPreallocateStringBuffer 함수(winstring.h)

HSTRING 만들기에 사용할 변경 가능한 문자 버퍼를 할당합니다.

구문

HRESULT WindowsPreallocateStringBuffer(
  UINT32         length,
  WCHAR          **charBuffer,
  HSTRING_BUFFER *bufferHandle
);

매개 변수

length

형식: [in] UINT32

할당할 버퍼의 크기입니다. 값 0은 빈 문자열에 해당합니다.

charBuffer

형식: [out] WCHAR**

문자를 보유하는 변경 가능한 버퍼입니다. 버퍼에 이미 종료 되는 NULL 문자가 포함되어 있습니다.

bufferHandle

형식: [out] HSTRING_BUFFER*

미리 할당된 문자열 버퍼이거나 길이가 0인 경우 NULL입니다.

반환 값

형식: HRESULT

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
HSTRING이 성공적으로 만들어졌습니다.
E_POINTER
mutableBuffer 또는 bufferHandleNULL입니다.
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
라이브러리 RuntimeObject.lib
DLL ComBase.dll

추가 정보

HSTRING

HSTRING_BUFFER

WindowsDeleteStringBuffer

WindowsPromoteStringBuffer