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
WdfTrue に設定されている場合、フレームワークがキューの電源管理を処理することを示す、WDF_TRI_STATE型指定された値。
WdfFalse に設定されている場合、ドライバーはキューの電源管理を処理する必要があります。
WdfUseDefault に設定すると、ドライバーが WdfFdoInitSetFilter を呼び出さない限り、フレームワークはキューの電源管理を処理します。
ドライバー スタックの 電源ポリシー所有者 より上のドライバーは、 PowerManaged メンバーを WdfTrue に設定しないでください。
電源マネージド I/O キューの詳細については、「Power Management for I/O Queues」を参照してください。
AllowZeroLengthRequests
TRUE の場合、ドライバーがバッファー長が 0 の読み取りまたは書き込み要求を受け取る必要があることを示すブール値。そのため、フレームワークはこれらの要求をドライバーに配信します。 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 要求の最大数。 詳細については、「解説」を参照してください。 シーケンシャル ディスパッチ メソッドと手動ディスパッチ メソッドの場合、このメンバーは 0 である必要があります。 このメンバーは、バージョン 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 への入力パラメーターとして使用されます。
バージョン 1.9 の KMDF 以降では、ドライバーは NumberOfPresentedRequests メンバーを使用して、フレームワークが並列 I/O キューの要求ハンドラーに非同期的に配信する I/O 要求の最大数を指定できます。 フレームワークは、指定された数の I/O 要求をドライバーに配信した後、ドライバーが少なくとも 1 つの要求を 完了、 キャンセル、または 再キュー するまで、キューからより多くの要求を配信しません。
並列キューの場合、WDF_IO_QUEUE_CONFIG_INITとWDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE、NumberOfPresentedRequests メンバーを既定値 (-1) に設定します。これは、フレームワークがドライバーに無制限の数の I/O 要求を配信できることを示します。
要件
要件 | 値 |
---|---|
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfio.h (Wdf.h を含む) |