次の方法で共有


WdfIoQueueRetrieveNextRequest 関数 (wdfio.h)

[KMDF と UMDF に適用]

WdfIoQueueRetrieveNextRequest メソッドは、指定された I/O キューから次に使用可能な I/O 要求を取得します。

構文

NTSTATUS WdfIoQueueRetrieveNextRequest(
  [in]  WDFQUEUE   Queue,
  [out] WDFREQUEST *OutRequest
);

パラメーター

[in] Queue

フレームワーク キュー オブジェクトへのハンドル。

[out] OutRequest

フレームワーク要求オブジェクトへのハンドルを受け取る場所へのポインター。 キューが空であるか、最後の要求が取得された場合、このパラメーターは NULL を受け取ります。

戻り値

操作が成功した場合、WdfIoQueueRetrieveNextRequest はSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_PARAMETER
ドライバーが無効なハンドルを指定しました。
STATUS_NO_MORE_ENTRIES
フレームワークが I/O キューの末尾に達しました。
STATUS_INVALID_DEVICE_STATE
指定された I/O キューは、並列ディスパッチ方式用に構成されます。
STATUS_WDF_PAUSED
指定された I/O キューが 電源管理 され、そのデバイスが低電力状態であるか、指定されたキューが停止しています。
 

このメソッドは、他の NTSTATUS 値を返す場合もあります。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ドライバーが I/O 要求を手動でディスパッチするために I/O キューを構成する場合、ドライバーは通常 、WdfIoQueueRetrieveNextRequest を呼び出してキューから要求を取得します。 順次ディスパッチ用に I/O キューを構成したドライバーは 、WdfIoQueueRetrieveNextRequest を呼び出すこともできます。 手動または順次ディスパッチ メソッドで WdfIoQueueRetrieveNextRequest を使用する方法の詳細については、「 I/O 要求のメソッドのディスパッチ」を参照してください。

WdfIoQueueRetrieveNextRequest を呼び出して I/O 要求を取得した後、ドライバーは要求を所有し、何らかの方法で I/O 要求を処理する必要があります。

WdfIoQueueRetrieveNextRequest メソッドの詳細については、「I/O キューの管理」を参照してください。

次のコード例では、デバイスの I/O キューに格納されている次の要求オブジェクトへのハンドルを取得します。

NTSTATUS  status;
WDFREQUEST  request;

status = WdfIoQueueRetrieveNextRequest(
                                       pDeviceContext->ReadQueue,
                                       &request
                                       );

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfio.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 DoubleCompletion(kmdf)DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)、wdfioqueueretrievenextrequest、 WdfIoQueueRetrieveNextRequest(kmdf)

こちらもご覧ください

WdfIoQueueRetrieveFoundRequest

WdfIoQueueRetrieveRequestByFileObject