IRP_MN_WRITE_CONFIG

Los controladores de autobús para autobuses con espacio de configuración deben controlar esta solicitud para sus dispositivos secundarios (PPO secundarios). Los controladores de función y filtro no controlan esta solicitud.

Value

0x10

Código principal

IRP_MJ_PNP

Cuándo se envió

Un controlador u otro componente del sistema envía este IRP para escribir datos en el espacio de configuración del bus primario de un dispositivo.

Un controlador u otro componente del sistema envía este IRP en IRQL < DISPATCH_LEVEL en un contexto de subproceso arbitrario.

Parámetros de entrada

Parameters.ReadWriteConfig es una estructura que contiene la siguiente información:

ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG Length

Los miembros de la estructura se pueden interpretar de forma diferente por los distintos conductores de autobús, pero los miembros normalmente se definen de la siguiente manera:

WhichSpace
Especifica el espacio de configuración. Para obtener información sobre los valores que se pueden especificar para WhichSpace, vea IRP_MN_READ_CONFIG.

Búfer
Apunta a un búfer que contiene los datos que se van a escribir. El formato del búfer es específico del bus.

Compensar
Especifica un desplazamiento en el espacio de configuración.

Longitud
Especifica el número de bytes que se van a escribir.

Parámetros de salida

Se devuelve en el bloque de estado de E/S.

Bloque de estado de entrada/salida

Un controlador de bus establece Irp-IoStatus.Status> en STATUS_SUCCESS o en un estado de error adecuado, como STATUS_INVALID_PARAMETER_n, STATUS_NO_SUCH_DEVICE o STATUS_DEVICE_NOT_READY.

Si se ejecuta correctamente, un controlador de bus establece Irp-IoStatus.Information> en el número de bytes escritos.

Si un controlador de autobús no puede completar esta solicitud inmediatamente, puede marcar el IRP pendiente, devolver STATUS_PENDING y completar el IRP más adelante.

Operación

Un controlador de bus controla este IRP para sus dispositivos secundarios (PDO secundarios).

Los controladores de función y filtro no controlan este IRP; lo pasan al siguiente controlador inferior sin cambios en Irp-IoStatus.Status> y no establecen una rutina de IoCompletion.

Consulte Plug and Play para conocer las reglas generales para controlar Plug and Play IRP menores.

Envío de este IRP

Normalmente, un controlador de función envía este IRP a la pila de dispositivos a la que está conectado y el controlador de bus primario controla el IRP.

Consulte Control de IRP para obtener información sobre el envío de IRP. Los pasos siguientes se aplican específicamente a este IRP:

  • Asigne un búfer del grupo paginado e inicialícelo con los datos que se van a escribir.

  • Establezca los valores en la siguiente ubicación de la pila de E/S del IRP: establezca MajorFunction en IRP_MJ_PNP, establezca MinorFunction en IRP_MN_WRITE_CONFIG y establezca los valores adecuados en Parameters.ReadWriteConfig.

  • Inicialice IoStatus.Status en STATUS_NOT_SUPPORTED.

  • Desasigne el IRP y el búfer cuando ya no sean necesarios.

Los controladores deben enviar este IRP desde irQL < DISPATCH_LEVEL.

Un controlador puede acceder al espacio de configuración de un bus en DISPATCH_LEVEL a través de una rutina de interfaz de bus, si el controlador de bus primario exporta dicha interfaz. Para obtener una interfaz de bus, un controlador envía una solicitud de IRP_MN_QUERY_INTERFACE a su controlador principal de bus. A continuación, el controlador llama a la rutina adecuada devuelta en la interfaz .

Por ejemplo, para escribir espacio de configuración desde DISPATCH_LEVEL un controlador puede llamar a IRP_MN_QUERY_INTERFACE durante la inicialización del controlador para obtener la interfaz de BUS_INTERFACE_STANDARD del controlador de bus primario. El controlador envía la consulta IRP desde irQL PASSIVE_LEVEL. Más adelante, desde el código de IRQL DISPATCH_LEVEL, el controlador llama a la rutina adecuada devuelta en la interfaz, como la rutina Interface.SetBusData .

Requisitos

Encabezado

Wdm.h (incluya Wdm.h, Ntddk.h o Ntifs.h)

Consulte también

IRP_MN_QUERY_INTERFACE

IRP_MN_READ_CONFIG