ディスパッチ ルーチンの機能

特定のディスパッチ ルーチンの必要な機能は、それが処理する I/O 関数コード、ドライバー チェーン内の個々のドライバー位置、および基になる物理デバイスの種類によって異なります。

ほとんどのディスパッチ ルーチンは、受け取った I/O 要求パケット (IRP) を次のように処理します。

  1. IRP のドライバーの I/O スタックの場所を確認して、実行する操作を決定し、パラメーター (存在する場合) をチェックして、有効性を確認します。

    ドライバーがその I/O スタック位置をチェックして実行する処理を判断するとともに、パラメーターをチェックする必要があるかどうかは、指定された IRP_MJ_XXX に加え、そのドライバーが自身の処理する各 IRP_MJ_XXX に対して別々のディスパッチ ルーチンを設定したかどうかに依存します。

  2. 要求を満たし、可能な場合は IRP を完了します。完了できない場合は、下位ドライバーまたは他のデバイス ドライバー ルーチンに IRP を渡してさらに処理します。

    ドライバーが IRP を渡してさらに処理する必要があるかどうかは、パラメーターの有効性 (存在する場合) に加え、IRP_MJ_XXX および階層化されたドライバーのチェーン内のドライバーのレベル (存在する場合) によって異なります。

IRP の詳細については、「IRP の処理」を参照してください。