WDF_IO_QUEUE_CONFIG 結構 (wdfio.h)
[適用於 KMDF 和 UMDF]
WDF_IO_QUEUE_CONFIG 結構包含架構佇列物件的組態資訊。
語法
typedef struct _WDF_IO_QUEUE_CONFIG {
ULONG Size;
WDF_IO_QUEUE_DISPATCH_TYPE DispatchType;
WDF_TRI_STATE PowerManaged;
BOOLEAN AllowZeroLengthRequests;
BOOLEAN DefaultQueue;
PFN_WDF_IO_QUEUE_IO_DEFAULT EvtIoDefault;
PFN_WDF_IO_QUEUE_IO_READ EvtIoRead;
PFN_WDF_IO_QUEUE_IO_WRITE EvtIoWrite;
PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl;
PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
PFN_WDF_IO_QUEUE_IO_STOP EvtIoStop;
PFN_WDF_IO_QUEUE_IO_RESUME EvtIoResume;
PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE EvtIoCanceledOnQueue;
union {
struct {
ULONG NumberOfPresentedRequests;
} Parallel;
} Settings;
WDFDRIVER Driver;
} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;
成員
Size
這個結構的長度,以位元組為單位。
DispatchType
識別佇列要求分派類型的 WDF_IO_QUEUE_DISPATCH_TYPE 列舉值。
PowerManaged
WDF_TRI_STATE型別值,如果設定為 WdfTrue,表示架構會處理佇列的電源管理。
如果設定為 WdfFalse,驅動程式必須處理佇列的電源管理。
如果設定為 WdfUseDefault,除非驅動程式呼叫 WdfFdoInitSetFilter,否則架構會處理佇列的電源管理。
驅動程式堆疊中 電源原則擁有者 上方的驅動程式不得將 PowerManaged 成員設定為 WdfTrue。
如需電源管理 I/O 佇列的詳細資訊,請參閱 I/O 佇列的電源管理。
AllowZeroLengthRequests
布爾值,如果為 TRUE,表示驅動程式預期會收到緩衝區長度為零的讀取或寫入要求,因此架構會將這些要求傳遞給驅動程式。 如果 為 FALSE,架構就不會將這些要求傳遞給驅動程式;相反地,它會以STATUS_SUCCESS的完成狀態完成它們。
DefaultQueue
布爾值,如果為 TRUE,表示佇列會是裝置 的預設 I/O 佇列。 如果 為 FALSE,佇列將不會是裝置的預設佇列。
EvtIoDefault
驅動程式佇列特定 EvtIoDefault 回呼函式或 NULL 的指標。
EvtIoRead
驅動程式佇列特定 EvtIoRead 回呼函式或 NULL 的指標。
EvtIoWrite
驅動程式佇列特定 EvtIoWrite 回呼函式或 NULL 的指標。
EvtIoDeviceControl
驅動程式佇列特定 EvtIoDeviceControl 回呼函式或 NULL 的指標。
EvtIoInternalDeviceControl
驅動程式佇列特定 EvtIoInternalDeviceControl 回呼函式或 NULL 的指標。
EvtIoStop
驅動程式佇列特定 EvtIoStop 回呼函式或 NULL 的指標。
EvtIoResume
驅動程式佇列特定 EvtIoResume 回呼函式或 NULL 的指標。
EvtIoCanceledOnQueue
驅動程式佇列特定 EvtIoCanceledOnQueue 回呼函式或 NULL 的指標。
Settings
Settings.Parallel
Settings.Parallel.NumberOfPresentedRequests
針對平行 分派方法,架構異步傳遞至 I/O 佇列要求處理程式的最大 I/O 要求數目。 如需詳細資訊,請參閱接下來的<備註>一節。 對於循序和手動分派方法,這個成員必須是零。 此成員可在 1.9 版和更新版本的 KMDF 中使用。
Driver
僅供內部使用。 設定為 NULL。 此成員可在 1.11 版和更新版本的 KMDF 中使用。
備註
驅動程式必須藉由呼叫 WDF_IO_QUEUE_CONFIG_INIT 或 WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE,初始化 WDF_IO_QUEUE_CONFIG 結構。
WDF_IO_QUEUE_CONFIG 結構是做為 WdfIoQueueCreate 的輸入參數。
從 KMDF 1.9 版開始,驅動程式可以使用 NumberOfPresentedRequests 成員來指定架構異步傳遞至平行 I/O 佇列要求處理程式的最大 I/O 要求數目。 架構將指定的 I/O 要求數目傳遞給驅動程式之後,在驅動程式 完成、 取消或 重新佇列 至少一個要求之前,它不會從佇列傳遞更多要求。
對於平行佇列, WDF_IO_QUEUE_CONFIG_INIT 和 WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE 將 NumberOfPresentedRequests 成員設定為其預設值 (-1) ,這表示架構可以將不限數目的 I/O 要求傳遞給驅動程式。
規格需求
需求 | 值 |
---|---|
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfio.h (包含 Wdf.h) |