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) |