デバイスの種類に固有の I/O 要求
Windows Driver Kit (WDK) のデバイス別のセクションでは、一般的な種類のデバイスについて、それぞれの種類のデバイスが I/O 要求を行ったときに、システム提供のドライバーがそれを処理する方法に関する情報が提供されています。
新しいカーネルモード ドライバーは、新しいドライバーが次のいずれかの条件を満たしている場合、システム提供のドライバーと同じ I/O 要求のセットを処理する必要があります。
新しいドライバーが、同じ種類のデバイスのシステム ドライバーの代わりに使用される場合。
新しいドライバーが、システムに既に存在する別の種類のデバイスをサポートする場合。
新しいドライバーは中間 (フィルター) ドライバーで、2 つのシステム提供ドライバーの間の階層をなしています。
このような新しいドライバーは、システム提供のドライバーが処理するすべての IRP_MJ_XXX 要求を処理する必要があります。 新しいデバイス ドライバーは、ほとんどの場合、IRP_MJ_DEVICE_CONTROL 要求に対して、同じ IOCTL_XXX コード セットを処理する必要があります。このことは、対応するシステム提供ドライバーの動作をエミュレートする必要がある場合も同じです。 そうしなければ、新しいドライバーは、この種類の要求が処理されることを想定しているユーザー モード アプリケーションを破壊する可能性があります。
ドライバーが 特定の要求の戻り値として、RP の I/O 状態ブロックで設定できる NTSTATUS 値については、「NTSTATUS 値の使用」を参照してください。 エラー ログ パケットで指定できる NTSTATUS 値については、「エラーのログ記録」を参照してください。 この情報を使用すると、似た種類のデバイスについて新しいドライバーが返す適切なステータス値を判定したり、新しい種類のデバイスについてドライバーが返す適切なステータス値を判断したりすることができます。
さまざまな種類のドライバーと、それぞれをサポートするために必要な要求の詳細については、以下を参照してください。
他のすべての種類のドライバーについては、該当するドライバーの種類に関するドキュメントを参照してください。