IRP ベースまたは高速 I/O とすることが可能な操作

次の種類の操作は、IRP ベースまたは高速 I/O 操作です。

  • IRP_MJ_DEVICE_CONTROL。 (IRP_MJ_INTERNAL_DEVICE_CONTROL は常に IRP ベースであることに注意してください)。

  • IRP_MJ_QUERY_INFORMATION。 FileInformationClass パラメーターが FileBasicInformationFileStandardInformation、または FileNetworkOpenInformation の場合、この操作は高速 I/O になります。

  • IRP_MJ_READ。 ミニフィルター ドライバーは、高速 I/O IRP_MJ_READ 操作とキャッシュ IRP ベースの読み取りを受け取らないように、FLT_OPERATION_REGISTRATION 構造体で FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO フラグを設定できます。

  • IRP_MJ_WRITE。 ミニフィルター ドライバーは、高速 I/O IRP_MJ_WRITE 操作とキャッシュ IRP ベースの書き取りを受け取らないように、FLT_OPERATION_REGISTRATION 構造体で FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO フラグを設定できます。

これらの操作のいずれかが高速 I/O 操作である場合、同等の IRP ベースの操作で別のバッファリング方法が使用されている場合でも、バッファー処理もダイレクト I/O も常に使用されません。

IRP_MJ_DEVICE_CONTROL が高速 I/O 操作である場合、IOCTL の転送の種類に関係なく、常にバッファー I/O も直接 I/O も使用されません。

IRP_MJ_LOCK_CONTROL IRP ベースまたは高速 I/O 操作を使用できますが、バッファーはありません。