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 una función de devolución de llamada EvtIoQueueState proporcionada por el controlador. 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 a la función de devolución de llamada EvtIoQueueState . Este parámetro es opcional y puede ser NULL.

Valor devuelto

None

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 las solicitudes cancelables de la cola y de 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 llama 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 a la función de devolución de llamada EvtIoCanceledOnQueue del controlador para esa cola, si el controlador ha proporcionado uno.

Si el controlador proporciona una función de devolución de llamada EvtIoQueueState , 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 a la cola recibir nuevas solicitudes, incluso si la cola no recibió nuevas solicitudes antes de que el controlador llamara 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.11
Versión mínima de UMDF 2.0
Encabezado wdfio.h (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Consulte también

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously