IWDFDevice::CreateIoQueue メソッド (wudfddi.h)
[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。
CreateIoQueue メソッドは、デバイスに関連付けられている既定の I/O キューを構成するか、デバイスのセカンダリ I/O キューを作成します。
構文
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
パラメーター
[in, optional] pCallbackInterface
ドライバーがキューでサブスクライブするイベント コールバック関数を決定するためにフレームワークが使用する IUnknown インターフェイスへのポインター。 これらは、関連するイベントが発生したときにフレームワークが呼び出す関数です。
UMDF バージョン 1.9 以降の場合、このパラメーターはシーケンシャルまたは並列ディスパッチ方式を使用する I/O キューに必要であり、手動ディスパッチメソッドを使用する I/O キューでは省略可能です (NULL にすることができます)。 1.9 より前の UMDF バージョンの場合、このパラメーターはすべてのディスパッチ メソッドに必要です。
[in] bDefaultQueue
既定の I/O キューを構成するか、デバイスのセカンダリ I/O キューを作成するかを指定する BOOL 値。 TRUE は 、既定の I/O キューを構成することを示します。 FALSE は 、セカンダリ I/O キューを作成することを示します。
[in] DispatchType
ドライバーが I/O キューから要求を受信する方法を識別するWDF_IO_QUEUE_DISPATCH_TYPE型指定の値。
[in] bPowerManaged
I/O キューが電源管理されているかどうかを示す BOOL 値。 TRUE は、フレームワークが、プラグ アンド プレイ (PnP) とデバイスの電源状態を使用して I/O キューのディスパッチを自動的に調整することを示します。FALSE は、自動的に調整されたディスパッチがないことを示します。
[in] bAllowZeroLengthRequests
ドライバーが処理できるように、フレームワークが長さ 0 の I/O 要求を I/O キューに直接配置するかどうかを指定する BOOL 値。 TRUE は 、ドライバーが長さ 0 のバッファーを持つ読み取り要求と書き込み要求を受け取る必要があることを示します。つまり、フレームワークは、これらの要求の種類をドライバーの I/O キューに直接自動的に配置します。 FALSE は 、フレームワークが I/O キューに入れるのではなく、長さ 0 の I/O 要求を完了することを示します。
[out] ppIoQueue
新しく作成された I/O キュー オブジェクトまたは既定の I/O キュー オブジェクトの IWDFIoQueue インターフェイスへのポインターを受け取る変数へのポインター。
戻り値
CreateIoQueue は 、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
I/O キューが正常に作成されました。 |
|
I/O キューは、次のいずれかの方法で構成されます。
|
CreateIoQueue は、他の HRESULT 値も返す場合があります。
注釈
ドライバーが pCallbackInterface パラメーターに提供する IUnknown インターフェイスでは、いくつかのキュー コールバック関数をサポートできます。 フレームワークは、指定された IUnknown インターフェイスで QueryInterface メソッドを複数回呼び出して、ドライバーがサポートするインターフェイス メソッドを取得します。 サポートされているインターフェイスのメソッド (I/O 読み取り要求など) に関連するアクションをアプリケーションが実行すると、フレームワークはメソッド ( IQueueCallbackRead::OnRead メソッドなど) を呼び出してドライバーに通知します。 フレームワークは、次のインターフェイスに対して QueryInterface を呼び出します。
IQueueCallbackDefaultIoHandler
ドライバーが CreateIoQueue の DispatchType パラメーターに対して WdfIoQueueDispatchSequential または WdfIoQueueDispatchParallel を渡して非manual キューを作成すると、CreateIoQueue は、ドライバーのキュー コールバック オブジェクトが上記のインターフェイスの少なくとも 1 つを実装し、pCallbackInterface が指す IUnknown インターフェイスを介したこのようなインターフェイスのサポートを示す場合にのみ、S_OKを返すことができます。
ドライバーが WdfIoQueueDispatchManual for DispatchType を渡して手動キューを作成すると、 CreateIoQueue は、ドライバーのキュー コールバック オブジェクトが上記のコールバック インターフェイスのサポートを実装または示していない場合にのみ、S_OKを返すことができます。 ドライバーのコールバック オブジェクトの詳細については、「 コールバック オブジェクトの作成」を参照してください。
また、フレームワークは、指定された IUnknown インターフェイスで QueryInterface を呼び出して、ドライバーが次のいずれかのインターフェイスをサポートしているかどうかを判断します。
また、フレームワークは、指定された IUnknown インターフェイスで QueryInterface を呼び出して、ドライバーが IQueueCallbackStateChange インターフェイスをサポートしているかどうかを判断します。 ドライバーのキュー コールバック オブジェクトは、必要に応じて、手動キューに対してのみ IQueueCallbackStateChange のサポートを実装して示すことができます。 ドライバーのキュー コールバック オブジェクトは、シーケンシャル キューまたは並列キューに対する IQueueCallbackStateChange のサポートを実装して示す必要があります。
例
CreateIoQueue メソッドの使用方法のコード例については、「IWDFDriver::CreateDevice」を参照してください。
要件
要件 | 値 |
---|---|
サポート終了 | UMDF 2.0 以降では使用できません。 |
対象プラットフォーム | デスクトップ |
最小 UMDF バージョン | 1.5 |
Header | wudfddi.h (Wudfddi.h を含む) |
[DLL] | WUDFx.dll |