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時指定 BRB (Bluetooth 要求區塊) 指標。
規格需求
需求 | 值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfrequest.h (包含 Wdf.h) |