WDF_WMI_BUFFER_APPEND_STRING 함수(wdfwmi.h)

[KMDF에만 적용]

WDF_WMI_BUFFER_APPEND_STRING 함수는 지정된 유니코드 문자열을 WMI에 필요한 형식으로 지정된 버퍼에 복사합니다.

구문

NTSTATUS WDF_WMI_BUFFER_APPEND_STRING(
  [out] PVOID            Buffer,
  [in]  ULONG            BufferLength,
  [in]  PCUNICODE_STRING String,
  [out] PULONG           RequiredSize
);

매개 변수

[out] Buffer

문자열을 수신하는 대상 버퍼에 대한 포인터입니다.

[in] BufferLength

문자열을 수신하는 대상 버퍼의 길이(바이트)입니다.

[in] String

복사할 문자열을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다.

[out] RequiredSize

대상 버퍼에 지정된 문자열을 저장하는 데 필요한 바이트 수를 수신하는 위치에 대한 포인터입니다.

반환 값

WDF_WMI_BUFFER_APPEND_STRING 작업이 성공하면 STATUS_SUCCESS 반환합니다. 대상 버퍼가 너무 작아 서 String 매개 변수가 지정하는 유니코드 문자열을 보유할 수 없는 경우 함수는 STATUS_BUFFER_TOO_SMALL 반환합니다.

설명

WMI를 사용하려면 EvtWmiInstanceQueryInstance 콜백 함수가 반환하는 문자열 앞에 바이트 수가 있어야 합니다. WDF_WMI_BUFFER_APPEND_STRING 함수는 바이트 수를 계산하고, 대상 버퍼에 저장한 다음, UNICODE_STRING 구조에서 대상 버퍼로 문자열을 복사합니다.

WDF_WMI_BUFFER_APPEND_STRING 반환되면 RequiredSize 매개 변수가 가리키는 위치에 버퍼에 기록된 총 바이트 수가 포함됩니다. 문자열 뒤에 있는 첫 번째 버퍼 주소를 찾으려면 드라이버가 RequiredSize 값을 Wdfcore.h에 정의된 WDF_PTR_ADD_OFFSET 매크로에 전달할 수 있습니다.

예제

다음 코드 예제는 직렬 샘플 드라이버에서 가져옵니다. 이 예제는 디바이스의 기호 이름을 가져오고 콜백 함수의 출력 버퍼에 이름을 복사하는 EvtWmiInstanceQueryInstance 콜백 함수입니다.

NTSTATUS
EvtWmiQueryPortName(
    IN  WDFWMIINSTANCE WmiInstance,
    IN  ULONG OutBufferSize,
    IN  PVOID OutBuffer,
    OUT PULONG BufferUsed
    )
{
    WDFDEVICE device;
    PSERIAL_DEVICE_EXTENSION pDevExt;
    WCHAR pRegName[SYMBOLIC_NAME_LENGTH];
    UNICODE_STRING string;
    USHORT nameSize = sizeof(pRegName);
    NTSTATUS status;

    PAGED_CODE();

    device = WdfWmiInstanceGetDevice(WmiInstance);
    pDevExt = SerialGetDeviceExtension(device);

    status = SerialReadSymName(
                               device,
                               pRegName,
                               &nameSize
                               );
    if (!NT_SUCCESS(status)) {
        return status;
    }
    RtlInitUnicodeString(
                         &string,
                         pRegName
                         );
    return WDF_WMI_BUFFER_APPEND_STRING(
                                        OutBuffer,
                                        OutBufferSize,
                                        &string,
                                        BufferUsed
                                        );
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfwmi.h(Wdf.h 포함)
라이브러리 없음

참고 항목

EvtWmiInstanceQueryInstance

UNICODE_STRING