次の方法で共有


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 を含む)

こちらもご覧ください

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify