次の方法で共有


WdfIoQueueStop 関数 (wdfio.h)

[KMDF と UMDF に適用]

WdfIoQueueStop メソッドは、I/O キューが I/O 要求を配信できないようにしますが、キューは新しい要求を受信して格納します。

構文

void WdfIoQueueStop(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE StopComplete,
  [in, optional] WDFCONTEXT             Context
);

パラメーター

[in] Queue

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

[in, optional] StopComplete

ドライバー提供の EvtIoQueueState コールバック関数へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます

[in, optional] Context

フレームワークが EvtIoQueueState コールバック関数に渡すドライバー提供のコンテキスト情報への型指定されていないポインター。 このパラメーターは省略可能であり、 NULL にすることができます

戻り値

なし

解説

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

ドライバーが EvtIoQueueState コールバック関数を提供する場合、ドライバーに配信されたすべての要求が完了または取り消された後、フレームワークによって呼び出されます。 キュー作成時に WDF_OBJECT_ATTRIBUTES でExecutionLevel を指定することで、コールバックが実行される IRQL を変更できます。 詳細については、EVT_WDF_IO_QUEUE_STATEの「解説」セクションを参照してください。

WdfIoQueueStop メソッドを使用すると、WdfIoQueueStop というドライバーの前にキューが新しい要求を受信していない場合でも、キューで新しい要求を受信できます。 たとえば、 WdfIoQueueStop を呼び出す前に、ドライバーは WdfIoQueueDrain を呼び出す可能性があります。これにより、フレームワークはキューへの新しい I/O 要求の追加を停止します。 ドライバーの後続の WdfIoQueueStop の呼び出しにより、フレームワークはキューへの要求の追加を再開します。

WdfIoQueueStop を呼び出した後、WdfIoQueueStart を呼び出してキューを再起動するまで、ドライバーは WdfIoQueueDrain を呼び出す必要があります。

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

次のコード例では、指定した I/O キューを停止します。 ドライバーに配信されたすべての要求が完了または取り消されると、ドライバーの EvtIoQueueStateStop 関数が呼び出されます。

WDFCONTEXT stopContext;

stopContext = &myContext;

WdfIoQueueStop(
               queue,
               EvtIoQueueStateStop,
               stopContext
               );

要件

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

こちらもご覧ください

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopSynchronously