IRP_MJ_INTERNAL_DEVICE_CONTROL

一般に、内部デバイス制御要求をサポートする既存のドライバーを置き換える場合は、DispatchInternalDeviceControl ルーチンでこの要求を処理する必要があります。 このようなドライバーは、少なくとも、置き換えるドライバーと同じ内部 I/O コントロール コードのセットをサポートする必要があります。 サポートしていない場合、既存の上位レベルのドライバーが新しいドライバーで動作しない可能性があります。

この要求を処理するには、特定の下位レベルのシステム ドライバーを置き換えるドライバーが必要です。 たとえば、システム並列ポート ドライバーを置き換える場合、その代替は既存の並列クラス ドライバーを引き続きサポートする必要があります。 この要求を処理する特定のシステム ドライバーは、特に、システム提供の SCSI およびビデオ ポート ドライバーを置き換えることはできないことに注意してください。

送信時

作成要求が正常に完了した後、随時。

入力パラメーター

I/O 制御コードは、IRP の I/O スタックの場所の Parameters.DeviceIoControl.IoControlCode に格納されています。

その他の入力パラメーターは、I/O 制御コードの値によって異なります。 詳細については、「I/O 制御コードのバッファー記述」を参照してください。

出力パラメーター

出力パラメーターは、I/O 制御コードの値によって異なります。 詳細については、「I/O 制御コードのバッファー記述」を参照してください。

操作

ドライバーは、別のドライバーが要求を作成するために IoBuildDeviceIoControlRequest または IoAllocateIrp を呼び出すと、IRP_MJ_INTERNAL_DEVICE_CONTROL 要求を受け取ります。

この I/O 制御コードは、ポート ドライバーの上に 1 つ以上のクラス ドライバーを重ねるなど、対になって階層化されたされたカーネル モード ドライバー間の通信用に定義されています。 上位レベルのドライバーは、デバイス固有またはドライバー固有の I/O 制御コードを使用して IRP を設定し、次の下位ドライバーのサポートを要求します。

要求された操作は、デバイス固有またはドライバー固有です。

IRP_MJ_DEVICE_CONTROL 要求または IRP_MJ_INTERNAL_DEVICE_CONTROL 要求の I/O 制御コードに関する一般的な情報については、「I/O 制御コードの使用」を参照してください。 また、「デバイスの種類に固有の I/O 要求」も参照してください。

要件

ヘッダー

Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

関連項目

DispatchInternalDeviceControl

IoAllocateIrp

IoBuildDeviceIoControlRequest