Compartir a través de


Códigos de función principales de IRP

Each driver-specific I/O stack location (IO_STACK_LOCATION) for every IRP contains a major function code (IRP_MJ_XXX), which tells the driver what operation it or the underlying device driver should carry out to satisfy the I/O request. Cada controlador en modo kernel debe proporcionar rutinas de distribución para los códigos de función principales que debe admitir.

The specific operations a driver carries out for a given IRP_MJ_XXX code depend somewhat on the underlying device, particularly for IRP_MJ_DEVICE_CONTROL and IRP_MJ_INTERNAL_DEVICE_CONTROL requests. Por ejemplo, las solicitudes enviadas a un controlador de teclado son necesariamente algo diferentes de las enviadas a un controlador de disco. Sin embargo, el administrador de E/S define los parámetros y el contenido de la ubicación de la pila de E/S para cada código de función principal definido por el sistema.

Every higher-level driver must set up the appropriate I/O stack location in IRPs for the next-lower-level driver and call IoCallDriver, either with each input IRP, or with a driver-created IRP (if the higher-level driver holds on to the input IRP). Por lo tanto, cada controlador intermedio debe proporcionar una rutina de distribución para cada código de función principal que controla el controlador de dispositivo subyacente. De lo contrario, un nuevo controlador intermedio "romperá la cadena" siempre que una aplicación o un controlador de nivel superior intente enviar una solicitud de E/S al controlador de dispositivo subyacente.

File system drivers and legacy file system filter drivers also handle a required subset of system-defined IRP_MJ_XXX function codes, some with subordinate IRP_MN_XXX function codes. Para obtener más información sobre cómo controlar estos IRP, consulte Códigos de función principales de IRP para controladores del sistema de archivos y controladores de filtro de FS heredados.

Los controladores controlan los IRP establecidos con algunos o todos los siguientes códigos de función principales:

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_PNP

IRP_MJ_POWER

IRP_MJ_QUERY_INFORMATION

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_SHUTDOWN

IRP_MJ_SYSTEM_CONTROL

IRP_MJ_WRITE

Los parámetros de entrada y salida descritos en esta sección son los parámetros específicos de la función en IRP.

For more information about IRPs, see Handling IRPs.