Operazioni che possono essere IRP-Based o I/O veloci

I tipi di operazioni seguenti possono essere operazioni di I/O basate su IRP o veloci:

  • IRP_MJ_DEVICE_CONTROL. Si noti che IRP_MJ_INTERNAL_DEVICE_CONTROL è sempre basato su IRP.

  • IRP_MJ_QUERY_INFORMATION. Questa operazione può essere veloce di I/O se il parametro FileInformationClass è FileBasicInformation, FileStandardInformation o FileNetworkOpenInformation.

  • IRP_MJ_READ. I driver minifilter possono impostare il flag di FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO nella struttura FLT_OPERATION_REGISTRATION per evitare la ricezione di operazioni di I/IRP_MJ_READ O veloci e letture basate su IRP memorizzate nella cache.

  • IRP_MJ_WRITE. I driver minifilter possono impostare il flag di FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO nella struttura FLT_OPERATION_REGISTRATION per evitare di ricevere operazioni di I/O rapide IRP_MJ_WRITE e scritture basate su IRP memorizzate nella cache.

Quando una di queste operazioni è un'operazione di I/O rapida, usa sempre né buffering né I/O diretto, anche se l'operazione basata su IRP equivalente usa un metodo di buffering diverso.

Quando IRP_MJ_DEVICE_CONTROL è un'operazione di I/O veloce, viene sempre usata né con buffer né I/O diretto, indipendentemente dal tipo di trasferimento di IOCTL.

Anche se IRP_MJ_LOCK_CONTROL può essere un'operazione di I/O basata su IRP o veloce, non ha buffer.