Códigos de función principales de IRP

Cada ubicación de pila de E/S específica del controlador (IO_STACK_LOCATION) para cada IRP contiene un código de función principal (IRP_MJ_XXX), que indica al controlador qué operación debe llevar a cabo o el controlador de dispositivo subyacente para satisfacer la solicitud de E/S. Cada controlador en modo kernel debe proporcionar rutinas de envío para los códigos de función principales que debe admitir.

Las operaciones específicas que realiza un controlador para un código IRP_MJ_XXX determinado dependen algo del dispositivo subyacente, especialmente para las solicitudes de IRP_MJ_DEVICE_CONTROL y IRP_MJ_INTERNAL_DEVICE_CONTROL . 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.

Cada controlador de nivel superior debe configurar la ubicación de pila de E/S adecuada en irP para el controlador de nivel inferior siguiente y llamar a IoCallDriver, ya sea con cada IRP de entrada o con un IRP creado por el controlador (si el controlador de nivel superior se mantiene en el IRP de entrada). Por lo tanto, cada controlador intermedio debe proporcionar una rutina de envío 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.

Los controladores del sistema de archivos y los controladores de filtro del sistema de archivos heredados también controlan un subconjunto necesario de códigos de función IRP_MJ_XXX definidos por el sistema, algunos con códigos de función IRP_MN_XXX subordinados. Para obtener más información sobre cómo controlar estos IRP, consulte Códigos de función principales de IRP para controladores de 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.

Para obtener más información sobre los IRP, consulte Control de IRP.