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 キューの詳細については、「I/O キューの Power Management」を参照してください。
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_QUEUENumberOfPresentedRequests メンバーを既定値 (-1) に設定します。これは、フレームワークがドライバーに無制限の数の I/O 要求を配信できることを示します。
必要条件
要件 | 価値 |
---|---|
最小 KMDF バージョン | 1.0 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfio.h (Wdf.h を含む) |