次の方法で共有


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 を含む)

関連項目

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams