Condividi tramite


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

IQueueCallbackRead::OnRead

IQueueCallbackWrite::OnWrite

IRequestCallbackCancel

IRequestCallbackCancel::OnCancel

IWDFIoRequest

IWDFIoRequest::Complete

IWDFIoRequest::ForwardToIoQueue

IWDFIoRequest::UnmarkCancelable