Compartir a través de


Función WdfDeviceConfigureWdmIrpDispatchCallback (wdfdevice.h)

[Se aplica a KMDF y UMDF]

El método WdfDeviceConfigureWdmIrpDispatchCallback registra la función de devolución de llamada de un controlador EvtDeviceWdmIrpDispatch.

Sintaxis

NTSTATUS WdfDeviceConfigureWdmIrpDispatchCallback(
  [in]           WDFDEVICE                      Device,
  [in, optional] WDFDRIVER                      Driver,
  [in]           UCHAR                          MajorFunction,
                 PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
  [in, optional] WDFCONTEXT                     DriverContext
);

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco.

[in, optional] Driver

Identificador del objeto de controlador del marco de trabajo del controlador que obtuvo el controlador de una llamada anterior a WdfDriverCreate o WdfGetDriver. Este parámetro es opcional.

[in] MajorFunction

Uno de los siguientes códigos de función principales de IRP: IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL, IRP_MJ_READ, IRP_MJ_WRITE.

EvtDeviceWdmIrpDispatch

Puntero al evtDeviceWdmIrpDispatch del controlador función de devolución de llamada.

[in, optional] DriverContext

Puntero sin tipo a la información de contexto definida por el controlador que el marco pasa a la EvtDeviceWdmIrpDispatch del controlador función de devolución de llamada. Este parámetro es opcional y puede ser NULL.

Valor devuelto

Si el método WdfDeviceConfigureWdmIrpDispatchCallback no encuentra ningún error, devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
Se proporcionó un valor de majorFunction no válido.
STATUS_INSUFFICIENT_RESOURCES
Memoria insuficiente disponible.

Observaciones

Un controlador llama al método WdfDeviceConfigureWdmIrpDispatchCallback para registrar una función de devolución de llamada EvtDeviceWdmIrpDispatch. A continuación, el marco llama a EvtDeviceWdmIrpDispatch cada vez que recibe un paquete de solicitud de E/S (IRP) que contiene un código de función principal de IRP que coincide con el parámetro majorFunction de de este método.

Normalmente, un controlador llama a WdfDeviceConfigureWdmIrpDispatchCallback desde su función de devolución de llamada EvtDriverDeviceAdd.

Debe llamar a WdfDeviceConfigureWdmIrpDispatchCallback una vez para cada función de MJ para la que el controlador desea registrar una función de devolución de llamada. En otras palabras, se requieren varias llamadas para interceptar varias funciones de MJ.

Un controlador puede llamar al método WdfDeviceConfigureWdmIrpDispatchCallback por estas razones:

  • Para examinar un IRP y asignarlo a una cola específica basada en criterios específicos del dominio, por ejemplo, dirija todas las E/S asociadas a un objeto de archivo a una cola determinada.
  • Para seleccionar una solicitud individual, es necesario llamar a la función de devolución de llamada EvtIoInCallerContext.

Para obtener más información sobre cómo especificar colas para IRP a medida que llegan, consulte Envío de IRP a colas de E/S.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.11
versión mínima de UMDF 2.17
encabezado de wdfdevice.h (incluya Wdf.h)
biblioteca de Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI DriverCreate(kmdf)

Consulte también

EvtDeviceWdmIrpDispatch

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue