Metodo IWDFIoRequest::MarkCancelable (wudfddi.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione con UMDF.]
Il metodo MarkCancelable consente l'annullamento della richiesta di I/O.
Sintassi
void MarkCancelable(
[in] IRequestCallbackCancel *pCancelCallback
);
Parametri
[in] pCancelCallback
Puntatore all'interfaccia IRequestCallbackCancel il cui metodo chiama il framework dopo l'annullamento della richiesta di I/O.
Valore restituito
nessuno
Osservazioni
Dopo che un driver riceve una richiesta di I/O come input in una funzione di callback dell'evento IQueueCallbackRead::OnQueueCallbackWrite::OnWrite oIQueueCallbackDeviceIoControl::OnDeviceIoControl, il driver può chiamare il metodo MarkCancelable per abilitare l'annullamento della richiesta. In seguito, il driver può chiamare il metodo IWDFIoRequest::UnmarkCancelable per disabilitare l'annullamento della richiesta.
Prima che un driver chiami MarkCancelable, il driver deve implementare il metodo IRequestCallbackCancel::OnCancel .
User Mode Driver Framework (UMDF) consente solo un metodo IRequestCallbackCancel::OnCancel per coda. Pertanto, quando un driver chiama MarkCancelable per le richieste associate a una determinata coda per consentire al framework di annullare tali richieste, il driver deve passare un puntatore all'interfaccia IRequestCallbackCancel per lo stesso oggetto request-callback. Successivamente, per annullare ogni richiesta, il framework passa un puntatore all'interfaccia IWDFIoRequest per la richiesta in una chiamata a questo oggetto IRequestCallbackCancel::OnCancel .
Il driver deve chiamare IWDFIoRequest::Complete, dal metodo IRequestCallbackCancel::OnCancel o dal relativo normale percorso di completamento di I/O.
Dopo che un driver chiama MarkCancelable per abilitare l'annullamento, la richiesta rimane annullabile mentre il driver ha il possesso dell'oggetto richiesta, a meno che il driver non chiami UnmarkCancelable per disabilitare l'annullamento.
Se il driver chiama il metodo IWDFIoRequest::ForwardToIoQueue per inoltrare la richiesta a una coda diversa, si applicano le regole seguenti:
-
L'annullamento delle richieste di I/O non può essere abilitato quando il driver inoltra le richieste a una coda diversa.
In genere, il driver non deve chiamare MarkCancelable per abilitare l'annullamento di una richiesta prima di chiamare IWDFIoRequest::ForwardToIoQueue. In alternativa, il driver può rendere annullabile la richiesta. Tuttavia, il driver deve quindi chiamare UnmarkCancelable per disabilitare l'annullamento della richiesta prima di chiamare IWDFIoRequest::ForwardToIoQueue.
- Mentre la richiesta si trova in una seconda coda, il framework lo possiede e può annullarlo senza notificare il driver.
- Dopo che il framework annulla la richiesta dalla seconda coda e recapita la richiesta al driver, il driver può chiamare MarkCancelable per abilitare l'annullamento.
Esempio
Nell'esempio di codice seguente viene impostata una richiesta in modo che il framework possa annullarlo.
//
// The QueryInteraface should not fail.
//
(VOID)this->QueryInterface(_uuidof(IRequestCallbackCancel),
(PVOID *)&cancelCallback);
pWdfRequest->MarkCancelable(cancelCallback);
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1.5 |
Intestazione | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Vedi anche
IQueueCallbackDeviceIoControl::OnDeviceIoControl
IRequestCallbackCancel::OnCancel