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.
[Se aplica a KMDF y UMDF]
El WdfIoQueueReadyNotify método registra (o anula el registro) una función de devolución de llamada de eventos a la que el marco llama cada vez que una cola de E/S especificada que estaba vacía recibe una o varias solicitudes de E/S especificadas.
Sintaxis
NTSTATUS WdfIoQueueReadyNotify(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE QueueReady,
[in, optional] WDFCONTEXT Context
);
Parámetros
[in] Queue
Identificador de un objeto de cola de marco.
[in, optional] QueueReady
Puntero a un controlador proporcionado EvtIoQueueState función de devolución de llamada, si el controlador se registra para recibir notificaciones preparadas o NULL si el controlador está anulando el registro.
[in, optional] Context
Puntero sin tipo a la información de contexto proporcionada por el controlador que el marco pasa al EvtIoQueueState función de devolución de llamada, si el controlador se registra para recibir notificaciones listas o null si el controlador está anulando el registro.
Valor devuelto
WdfIoQueueReadyNotify devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:
| Código de retorno | Descripción |
|---|---|
|
El controlador proporcionó un identificador no válido. |
|
Este valor se devuelve si se produce una de las siguientes acciones:
|
Este método también puede devolver otros valores de NTSTATUS.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Observaciones
Después de llamar a un controlador WdfIoQueueReadyNotify para registrar una función de devolución de llamada EvtIoQueueState, el marco llama a la función de devolución de llamada cada vez que el estado de la cola especificada cambia de vacío a no vacío. En concreto, el marco llama a EvtIoQueueState cuando una solicitud llega a una cola vacía, incluso si el controlador todavía posee las solicitudes entregadas previamente de la cola que aún no se ha completado. Puede modificar el IRQL en el que se ejecuta la devolución de llamada especificando ExecutionLevel en WDF_OBJECT_ATTRIBUTES en tiempo de creación de la cola. Para obtener más información, consulta la sección Comentarios deEVT_WDF_IO_QUEUE_STATE.
El marco no llama a EvtIoQueueState mientras se detiene la cola especificada. Cuando se inicia la cola, el marco llama a EvtIoQueueState si la cola no está vacía.
El controlador puede llamar a WdfIoQueueReadyNotify solo para las colas de E/S que usan el método de envío manual .
La función de devolución de llamada EvtIoQueueState normalmente llama a WdfIoQueueRetrieveNextRequest o WdfIoQueueRetrieveRequestByFileObject en un bucle para recuperar todas las solicitudes que han llegado desde la última vez que se ejecutó la función de devolución de llamada.
Para detener que el marco llame a la función de devolución de llamada EvtIoQueueState, el controlador debe llamar a WdfIoQueueReadyNotify de nuevo con el parámetro QueueReady establecido en NULL. Sin embargo, el controlador primero debe llamar a WdfIoQueueStop o WdfIoQueueStopSynchronously para detener la cola de E/S. Posteriormente, el controlador puede llamar a WdfIoQueueStart para reiniciar la cola.
Cuando un controlador llama a WdfIoQueueReadyNotify para registrar una función de devolución de llamada de EvtIoQueueState, es posible que el marco llame a la función de devolución de llamada antes de WdfIoQueueReadyNotify.
Para obtener más información sobre el método WdfIoQueueReadyNotify, vea Métodos de distribución para solicitudes de E/S.
Ejemplos
En el ejemplo de código siguiente se registra la función EvtIoQueueRead y de un controlador, de modo que se llame a esta función cuando la cola de E/S especificada reciba una solicitud de E/S.
Status = WdfIoQueueReadyNotify(
ReadQueue,
EvtIoQueueReady,
myQueueContext
);
Requisitos
| Requisito | Valor |
|---|---|
| de la plataforma de destino de | Universal |
| versión mínima de KMDF | 1.0 |
| versión mínima de UMDF | 2.0 |
| encabezado | wdfio.h (incluya Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| irQL | <= DISPATCH_LEVEL |
| reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |