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_INITWDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE、NumberOfPresentedRequests メンバーを既定値 (-1) に設定します。これは、フレームワークがドライバーに無制限の数の I/O 要求を配信できることを示します。

要件

要件
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfio.h (Wdf.h を含む)

こちらもご覧ください

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify