[KMDF と UMDF に適用]
WDF_MEMORY_DESCRIPTOR_INIT_HANDLE 関数は、指定されたフレームワーク メモリ オブジェクトを記述するように、WDF_MEMORY_DESCRIPTOR 構造体を初期化します。
構文
void WDF_MEMORY_DESCRIPTOR_INIT_HANDLE(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] WDFMEMORY Memory,
[in, optional] PWDFMEMORY_OFFSET Offsets
);
パラメーター
[out] Descriptor
WDF_MEMORY_DESCRIPTOR 構造体へのポインター。
[in] Memory
フレームワーク メモリ オブジェクトへのハンドル。
[in, optional] Offsets
WDFMEMORY_OFFSET 構造体へのポインター。 このパラメーターは省略可能であり、NULL できます。
戻り値
なし
注釈
WDF_MEMORY_DESCRIPTOR_INIT_HANDLE 関数は、指定した WDF_MEMORY_DESCRIPTOR 構造体を 0 にし、構造体の Type メンバーを WdfMemoryDescriptorTypeHandle に設定します。 次に、構造体の u.HandleType.Memory と u.HandleType.Offsets メンバーをそれぞれ、Memory パラメーターと Offsets パラメーターで指定された値に設定します。
例示
次のコード例では、I/O 要求の入力バッファーを表すフレームワーク メモリ オブジェクトへのハンドルを取得します。 この例では、メモリ オブジェクト ハンドルを使用して、WDF_MEMORY_DESCRIPTOR 構造体を初期化します。 次に、WDF_USB_CONTROL_SETUP_PACKET 構造体を初期化し、USB コントロール転送要求を I/O ターゲットに送信します。
WDFMEMORY memory;
WDF_MEMORY_DESCRIPTOR memDesc;
WDF_USB_CONTROL_SETUP_PACKET controlSetupPacket;
NTSTATUS status;
status = WdfRequestRetrieveInputMemory(
Request,
&memory
);
if (!NT_SUCCESS(status)) {
break;
}
WDF_MEMORY_DESCRIPTOR_INIT_HANDLE(
&memDesc,
memory,
NULL
);
WDF_USB_CONTROL_SETUP_PACKET_INIT_VENDOR(
&controlSetupPacket,
BmRequestHostToDevice,
BmRequestToDevice,
USBFX2LK_SET_BARGRAPH_DISPLAY,
0,
0
);
status = WdfUsbTargetDeviceSendControlTransferSynchronously(
pDevContext->UsbDevice,
NULL,
NULL,
&controlSetupPacket,
&memDesc,
(PULONG)&bytesTransferred
);
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 普遍 |
最小 KMDF バージョン | 1.0 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfmemory.h (Wdf.h を含む) |
DDI コンプライアンス規則 を する | MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |