共用方式為


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 的指標。 同樣地,藍牙驅動程式會在收到 IOCTL_INTERNAL_BTH_SUBMIT_BRB時,指定 Parameters.Others.Argument1 中 BRB(藍牙要求區塊)的指標

要求

要求 價值
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
標頭 wdfrequest.h (包括 Wdf.h)

另請參閱

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams