Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si el controlador ha especificado el método de distribución secuencial o paralelo para una cola de E/S, el marco llama a una función de devolución de llamada proporcionada por el controlador cada vez que está listo para entregar una de las solicitudes de la cola al controlador.
Para cada cola de E/S, el controlador puede ofrecer una o múltiples de las siguientes funciones de devolución de llamada, conocidas como manejadores de solicitudes:
EvtIoRead
El marco llama a la función de devolución de llamada EvtIoRead de una cola de E/S cuando una solicitud de lectura está disponible en la cola.
EvtIoWrite
El marco llama a la función de devolución de llamada EvtIoWrite de una cola de E/S cuando una solicitud de escritura está disponible en la cola.
EvtIoDeviceControl
El marco llama a la función de devolución de llamada EvtIoDeviceControl de una cola de E/S cuando una solicitud de control de E/S de dispositivo está disponible en la cola.
EvtIoInternalDeviceControl
El marco llama a la función de devolución de llamada EvtIoInternalDeviceControl cuando una solicitud de control de E/S interna está disponible en la cola de E/S.
EvtIoDefault
El marco llama a la función de callback EvtIoDefault de una cola de E/S cuando hay alguna solicitud disponible, si el controlador no ha proporcionado la función de callback específica del tipo de solicitud asociada.
El controlador registra funciones callback cuando llama a WdfIoQueueCreate para crear una cola de E/S para un dispositivo.
Cada una de estas funciones de devolución de llamada recibe dos argumentos de entrada: un identificador de la solicitud de E/S que el entorno entrega al controlador y un identificador a la cola de E/S que contiene la solicitud. Una función callback puede determinar el dispositivo de destino llamando a WdfIoQueueGetDevice.
El entorno llama a los gestores de solicitudes de tu controlador en un contexto de subproceso arbitrario. Un controlador no debe esperar un período de tiempo prolongado mientras está ejecutando en un contexto de subproceso arbitrario. En algunos casos, el controlador podría usar objetos despachadores del núcleo como mecanismos de sincronización. Para obtener información sobre cuándo el controlador puede esperar a objetos de distribuidor y qué hacer cuando no es posible, vea Introducción a los objetos de distribuidor de kernel.