次の方法で共有


WDF_WMI_BUFFER_APPEND_STRING関数 (wdfwmi.h)

[KMDF にのみ適用]

WDF_WMI_BUFFER_APPEND_STRING 関数は、指定した Unicode 文字列を、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 パラメーターが指定する Unicode 文字列を保持するには、関数はSTATUS_BUFFER_TOO_SMALLを返します。

備考

WMI では、EvtWmiInstanceQueryInstance コールバック関数が返す文字列の前にバイト数が必要です。 WDF_WMI_BUFFER_APPEND_STRING 関数はバイト数を計算し、それを宛先バッファーに格納してから、UNICODE_STRING 構造体からコピー先バッファーに文字列をコピーします。

WDF_WMI_BUFFER_APPEND_STRING が返されると、RequiredSize パラメーターが指す位置には、バッファーに書き込まれた合計バイト数が格納されます。 文字列の後に続く最初のバッファー アドレスを検索するには、ドライバーは Wdfcore.h で定義されているWDF_PTR_ADD_OFFSET マクロに RequiredSize渡すことができます。

次のコード例は、シリアル サンプル ドライバーのコード例です。 この例は、デバイスのシンボリック名を取得し、その名前をコールバック関数の出力バッファーにコピーする、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