Condividi tramite


Funzione WdfIoQueueStopAndPurge (wdfio.h)

[Si applica a KMDF e UMDF]

Il metodo WdfIoQueueStopAndPurge impedisce a una coda di I/O di recapitare nuove richieste e annulla le richieste non elaborate esistenti e le richieste annullabili di proprietà del driver, ma la coda riceve e archivia nuove richieste.

Sintassi

void WdfIoQueueStopAndPurge(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
  [in, optional] WDFCONTEXT             Context
);

Parametri

[in] Queue

Handle per un oggetto coda del framework.

[in, optional] StopAndPurgeComplete

Puntatore a una funzione di callback EvtIoQueueState fornita dal driver. Questo parametro è facoltativo e può essere NULL.

[in, optional] Context

Puntatore non tipizzato alle informazioni sul contesto fornite dal driver che il framework passa alla funzione di callback EvtIoQueueState . Questo parametro è facoltativo e può essere NULL.

Valore restituito

nessuno

Osservazioni

Il metodo WdfIoQueueStopAndPurge impedisce a una coda di I/O di recapitare richieste di I/O al driver, consentendo al tempo stesso l'aggiunta di nuove richieste alla coda.

Inoltre, annulla le richieste non elaborate nella coda e nelle richieste annullabili di proprietà del driver (richieste recapitate al driver che il driver non ha completato o ricontrollato). Se vengono aggiunte nuove richieste mentre WdfIoQueueStopAndPurge è in corso, queste nuove richieste non vengono recapitate finché il driver chiama WdfIoQueueStart.

Al contrario, il metodo WdfIoQueueStop non annulla le richieste non elaborate nelle richieste annullabili di proprietà del driver o della coda.

Se questo metodo determina l'annullamento di una richiesta non elaborata in una coda, il framework chiama la funzione di callback EvtIoCanceledOnQueue del driver per tale coda, se ne è stata fornita una.

Se il driver fornisce una funzione di callback EvtIoQueueState , il framework lo chiama dopo il completamento o l'annullamento di tutte le richieste recapitate al driver.

Il metodo WdfIoQueueStopAndPurge consente alla coda di ricevere nuove richieste, anche se la coda non riceveva nuove richieste prima del driver WdfIoQueueStopAndPurge. Ad esempio, un driver potrebbe chiamare WdfIoQueueDrain, che impedisce al framework di aggiungere nuove richieste di I/O alla coda. La chiamata successiva del driver di WdfIoQueueStopAndPurge fa sì che il framework riprenda ad aggiungere richieste alla coda.

Al contrario, WdfIoQueuePurge impedisce al framework di aggiungere richieste di I/O alla coda specificata.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Esempio

L'esempio di codice seguente arresta ed elimina una coda di I/O specificata. Dopo che tutte le richieste recapitate al driver sono state completate o annullate, il framework chiama la funzione EvtIoQueueStateStopAndPurge di un driver.

WDFCONTEXT stopandpurgeContext;

stopandpurgeContext = &myContext;

WdfIoQueueStopAndPurge(
               queue,
               EvtIoQueueStateStopAndPurge,
               stopandpurgeContext
               );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.11
Versione UMDF minima 2,0
Intestazione wdfio.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Vedi anche

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously