次の方法で共有


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」を参照してください。

要求の I/O 完了情報を取得するために WdfRequestGetCompletionParams を 呼び出す前に、ドライバーは最初に WDF_REQUEST_COMPLETION_PARAMS_INIT を呼び出して WDF_REQUEST_COMPLETION_PARAMS 構造体を初期化する必要があります。

Parameters.Others.Argument メンバーは、ドライバーが通常スタックを渡すカスタム引数です (要求が完了した後に戻ることができます)。 これらは、非標準のドライバー スタック依存データに使用されます。 たとえば、USB ドライバーは、USB スタックにIOCTL_INTERNAL_USB_SUBMIT_URB要求を送信するときに Parameters.Others.Argument1 の URB へのポインターを指定します。 同様に、Bluetooth ドライバーは、IOCTL_INTERNAL_BTH_SUBMIT_BRBを受信するときに Parameters.Others.Argument1 で BRB (Bluetooth 要求ブロック) へのポインターを指定します。

要件

要件
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfrequest.h (Wdf.h を含む)

こちらもご覧ください

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams