WDF_REQUEST_COMPLETION_PARAMS構造体 (wdfrequest.h)
[KMDF と UMDF に適用]
WDF_REQUEST_COMPLETION_PARAMS 構造体には、I/O 要求の完了に関連付けられているパラメーターが含まれています。
構文
typedef struct _WDF_REQUEST_COMPLETION_PARAMS {
ULONG Size;
WDF_REQUEST_TYPE Type;
IO_STATUS_BLOCK IoStatus;
union {
struct {
WDFMEMORY Buffer;
size_t Length;
size_t Offset;
} Write;
struct {
WDFMEMORY Buffer;
size_t Length;
size_t Offset;
} Read;
struct {
ULONG IoControlCode;
struct {
WDFMEMORY Buffer;
size_t Offset;
} Input;
struct {
WDFMEMORY Buffer;
size_t Offset;
size_t Length;
} Output;
} Ioctl;
struct {
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument1;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument2;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument3;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument4;
} Others;
struct {
PWDF_USB_REQUEST_COMPLETION_PARAMS Completion;
} Usb;
} Parameters;
} WDF_REQUEST_COMPLETION_PARAMS, *PWDF_REQUEST_COMPLETION_PARAMS;
メンバーズ
Size
この構造体のサイズ (バイト単位)。
Type
要求の種類を識別する WDF_REQUEST_TYPE 値。
IoStatus
要求の IO_STATUS_BLOCK 構造体。
Parameters
要求の要求固有の値。
Parameters.Write
Parameters.Write.Buffer
フレームワーク メモリ オブジェクトへのハンドル。 このオブジェクトは、ドライバーが要求を書式設定し、I/O ターゲットに送信したときに指定されたバッファーを識別します。
Parameters.Write.Length
転送の長さ (バイト単位)。
Parameters.Write.Offset
データ転送のバッファー内の開始アドレス。
Parameters.Read
Parameters.Read.Buffer
フレームワーク メモリ オブジェクトへのハンドル。 このオブジェクトは、ドライバーが要求を書式設定し、I/O ターゲットに送信したときに指定されたバッファーを識別します。
Parameters.Read.Length
転送の長さ (バイト単位)。
Parameters.Read.Offset
データ転送のバッファー内の開始アドレス。
Parameters.Ioctl
Parameters.Ioctl.IoControlCode
Parameters.Ioctl.Input
Parameters.Ioctl.Input.Buffer
フレームワーク メモリ オブジェクトへのハンドル。 このオブジェクトは、要求を書式設定し、I/O ターゲットに送信したときにドライバーが指定した入力バッファーを識別します。
Parameters.Ioctl.Input.Offset
データ転送のバッファー内の開始アドレス。
Parameters.Ioctl.Output
Parameters.Ioctl.Output.Buffer
フレームワーク メモリ オブジェクトへのハンドル。 このオブジェクトは、ドライバーが要求を書式設定し、I/O ターゲットに送信したときに指定された出力バッファーを識別します。
Parameters.Ioctl.Output.Offset
データ転送のバッファー内の開始アドレス。
Parameters.Ioctl.Output.Length
転送の長さ (バイト単位)。
Parameters.Others
Parameters.Others.Argument1
このメンバーの使用は、ドライバー スタックによって定義されます。 「解説」を参照してください。
Parameters.Others.Argument1.Ptr
Parameters.Others.Argument1.Value
Parameters.Others.Argument2
このメンバーの使用は、ドライバー スタックによって定義されます。
Parameters.Others.Argument2.Ptr
Parameters.Others.Argument2.Value
Parameters.Others.Argument3
このメンバーの使用は、ドライバー スタックによって定義されます。
Parameters.Others.Argument3.Ptr
Parameters.Others.Argument3.Value
Parameters.Others.Argument4
このメンバーの使用は、ドライバー スタックによって定義されます。
Parameters.Others.Argument4.Ptr
Parameters.Others.Argument4.Value
Parameters.Usb
USB デバイスの場合、このメンバーには、WDF_USB_REQUEST_COMPLETION_PARAMS 構造体へのポインターが含まれています。
Parameters.Usb.Completion
備考
WDF_REQUEST_COMPLETION_PARAMS 構造体は、WdfRequestGetCompletionParams メソッドとドライバーの CompletionRoutine コールバック関数への入力として使用されます。
どちらの場合も、完了パラメーター構造体には、ドライバーが WdfIoTargetFormatXxx メソッドのいずれかを呼び出すことによって要求を書式設定した場合にのみ、有効な情報が含まれます。 たとえば、WdfIoTargetFormatRequestForRead を参照してください。
WdfRequestGetCompletionParams を呼び出して要求の I/O 完了情報を取得する前に、ドライバーは最初に WDF_REQUEST_COMPLETION_PARAMS_INIT を呼び出して WDF_REQUEST_COMPLETION_PARAMS 構造体を初期化する必要があります。
Parameters.Others.Argument メンバーは、ドライバーが通常スタックを渡すカスタム引数です (要求が完了した後に戻ることができます)。 これらは、非標準のドライバー スタック依存データに使用されます。 たとえば、USB ドライバーは、IOCTL_INTERNAL_USB_SUBMIT_URB 要求を USB スタックに送信するときに、Parameters.Others.Argument1 の URB へのポインターを指定します。 同様に、Bluetooth ドライバーは、IOCTL_INTERNAL_BTH_SUBMIT_BRBを受け取ったときに、Parameters.Others.Argument1 の BRB (Bluetooth 要求ブロック) へのポインターを指定します。
必要条件
要件 | 価値 |
---|---|
最小 KMDF バージョン | 1.0 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfrequest.h (Wdf.h を含む) |