要求ハンドラー

ドライバーが I/O キューのディスパッチ方法として順次ディスパッチまたは並列ディスパッチを指定している場合、フレームワークは、キューのいずれかの要求をドライバーに送信する準備が整うたびに、ドライバーで指定されたコールバック関数を呼び出します。

ドライバーは、各 I/O キューについて、次の 1 つ以上のコールバック関数 ("要求ハンドラー" と呼ばれます) を指定できます。

  • EvtIoRead
    キュー内の読み取り要求を送信できるようになったときに、フレークワークによって呼び出される I/O キューの EvtIoRead コールバック関数。

  • EvtIoWrite
    キュー内の書き込み要求を送信できるようになったときに、フレークワークによって呼び出される I/O キューの EvtIoWrite コールバック関数。

  • EvtIoDeviceControl
    キュー内のデバイス I/O 制御要求を送信できるようになったときに、フレークワークによって呼び出される I/O キューの EvtIoDeviceControl コールバック関数。

  • EvtIoInternalDeviceControl
    キュー内の内部デバイス I/O 制御要求を送信できるようになったときに、フレークワークによって呼び出される I/O キューの EvtIoInternalDeviceControl コールバック関数。

  • EvtIoDefault
    要求を送信できるようになったが、その要求に関連付けられた要求の種類ごとのコールバック関数がドライバーで指定されていない場合に、フレームワークによって呼び出される I/O キューの EvtIoDefault コールバック関数。

 

ドライバーは、WdfIoQueueCreate を呼び出してデバイスの I/O キューを作成するときに、コールバック関数を登録します。

これらの各コールバック関数は、フレームワークがドライバーに送信しようとしている I/O 要求のハンドルと、その要求を格納していた I/O キューのハンドルの 2 つを入力引数として受け取ります。コールバック関数は、WdfIoQueueGetDevice を呼び出すことで、ターゲット デバイスを特定できます。