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 の