I/O キューの状態
フレームワークは、I/O キューに対して次の状態を定義します:
Idle
I/O キューに I/O リクエストが含まれておらず、ドライバーは I/O キューから受信したリクエストを処理していません。
準備完了
I/O キューはフレームワークから I/O リクエストを受信でき、ドライバーに I/O リクエストを配信できます。
停止
I/O キューはフレームワークから I/O リクエストを受信できますが、ドライバーに I/O リクエストを配信することはできません。また、ドライバーは I/O キューから受信したリクエストを処理していません。
Drained
I/O キューが空であり、フレームワークから新しい I/O リクエストを受信できず、I/O キューに含まれるすべての I/O リクエストがドライバーに配信されています。
Purged
I/O キューが空であり、フレームワークから新しい I/O リクエストを受信できず、I/O キューに含まれるすべての I/O リクエストがキャンセルされました。
ドライバーがWdfIoQueueCreateを呼び出した後、フレームワークは新しい I/O キューを準備完了状態に設定できます。 ただし、power-managed I/O queuesは、デバイスが動作 (D0)状態にある場合にのみ、準備完了状態になります。
ドライバーは、次の方法で I/O キューの状態を変更できます:
WdfIoQueueStop や WdfIoQueueStopSynchronouslyを呼び出して、キューを停止状態にします。
WdfIoQueueDrain や WdfIoQueueDrainSynchronouslyを呼び出して、キューをドレイン状態にします。
WdfIoQueuePurge や WdfIoQueuePurgeSynchronously を呼び出して、キューをパージされた状態にします。
WdfIoQueueStart を呼び出してキューを準備完了状態に戻します。
I/O キューの現在の状態を取得するには、ドライバーは WdfIoQueueGetStateを呼び出すことができます。