Función WdfIoQueueStopAndPurge (wdfio.h)
[Se aplica a KMDF y UMDF]
El método WdfIoQueueStopAndPurge impide que una cola de E/S entregue nuevas solicitudes y cancele las solicitudes no procesadas existentes y las solicitudes cancelables propiedad del controlador, pero la cola recibe y almacena nuevas solicitudes.
Sintaxis
void WdfIoQueueStopAndPurge(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
[in, optional] WDFCONTEXT Context
);
Parámetros
[in] Queue
Identificador de un objeto de cola de marco.
[in, optional] StopAndPurgeComplete
Puntero a un EvtIoQueueState proporcionado por el controlador función de devolución de llamada. Este parámetro es opcional y puede ser NULL.
[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. Este parámetro es opcional y puede ser NULL.
Valor devuelto
Ninguno
Observaciones
El método WdfIoQueueStopAndPurge impide que una cola de E/S entregue solicitudes de E/S al controlador al tiempo que permite agregar nuevas solicitudes a la cola.
Además, cancela las solicitudes no procesadas en la cola y las solicitudes cancelables propiedad del controlador (solicitudes que se entregaron al controlador que el controlador no ha completado o vuelto a poner en cola). Si se agregan nuevas solicitudes mientras WdfIoQueueStopAndPurge está en curso, estas nuevas solicitudes no se entregan hasta que el controlador llame a WdfIoQueueStart.
Por el contrario, el método WdfIoQueueStop no cancela las solicitudes no procesadas en la cola ni en las solicitudes cancelables propiedad del controlador.
Si este método hace que el marco cancele una solicitud sin procesar en una cola, el marco llama al EvtIoCanceledOnQueue función de devolución de llamada para esa cola, si el controlador ha proporcionado uno.
Si el controlador proporciona un EvtIoQueueState función de devolución de llamada, el marco lo llama después de que se hayan completado o cancelado todas las solicitudes que se entregaron al controlador.
El método WdfIoQueueStopAndPurge permite que la cola reciba nuevas solicitudes, incluso si la cola no recibe nuevas solicitudes antes de que el controlador llame a WdfIoQueueStopAndPurge. Por ejemplo, un controlador podría llamar a WdfIoQueueDrain, lo que hace que el marco deje de agregar nuevas solicitudes de E/S a la cola. La llamada posterior del controlador de WdfIoQueueStopAndPurge hace que el marco reanude la adición de solicitudes a la cola.
En cambio, WdfIoQueuePurge hace que el marco deje de agregar solicitudes de E/S a la cola especificada.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Ejemplos
En el ejemplo de código siguiente se detiene y purga una cola de E/S especificada. Una vez completadas o canceladas todas las solicitudes que se entregaron al controlador, el marco llama a la función EvtIoQueueStateStopAndPurge de un controlador.
WDFCONTEXT stopandpurgeContext;
stopandpurgeContext = &myContext;
WdfIoQueueStopAndPurge(
queue,
EvtIoQueueStateStopAndPurge,
stopandpurgeContext
);
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.0 |
encabezado | wdfio.h (incluya Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
irQL | <=DISPATCH_LEVEL |
reglas de cumplimiento de DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |