Compartir a través de


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)

Consulte también

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously