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. Non vengono aggiunte nuove funzionalità 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, vedi Introduzione a UMDF.]
Il metodo MarkCancelable abilita 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 per un IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWriteo IQueueCallbackDeviceIoControl::OnDeviceIoControl funzione di callback degli eventi, il driver può chiamare il metodo MarkCancelable per abilitare l'annullamento della richiesta. Successivamente, 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 un solo metodo IRequestCallbackCancel::OnCancel per coda. Pertanto, quando un driver chiama MarkCancelable per le richieste associate a una particolare coda per consentire al framework di annullare tali richieste, il driver deve passare un puntatore alla IRequestCallbackCancel interfaccia 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 al metodo IRequestCallbackCancel::OnCancel dell'oggetto request-callback.
Il driver deve chiamare metodo 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 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 al 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.
Esempi
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);
Fabbisogno
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
piattaforma di destinazione | Desktop |
versione minima di UMDF | 1.5 |
intestazione | wudfddi.h (include Wudfddi.h) |
dll | WUDFx.dll |
Vedere anche
IQueueCallbackDeviceIoControl::OnDeviceIoControl
IRequestCallbackCancel::OnCancel