Funzione WdfRequestCompleteWithPriorityBoost (wdfrequest.h)
[Si applica solo a KMDF]
Il metodo WdfRequestCompleteWithPriorityBoost completa una richiesta di I/O specificata e fornisce uno stato di completamento. Specifica inoltre un valore che il sistema può usare per aumentare la priorità di runtime del thread che ha richiesto l'operazione di I/O.
Sintassi
void WdfRequestCompleteWithPriorityBoost(
[in] WDFREQUEST Request,
[in] NTSTATUS Status,
[in] CCHAR PriorityBoost
);
Parametri
[in] Request
Handle per l'oggetto richiesta framework che rappresenta la richiesta di I/O completata.
[in] Status
Valore NTSTATUS che rappresenta lo stato di completamento della richiesta. I valori di stato validi includono, ma non sono limitati ai seguenti:
STATUS_SUCCESS
Il driver ha completato la richiesta.
STATUS_CANCELLED
Il driver ha annullato la richiesta.
STATUS_UNSUCCESSFUL
Il driver ha rilevato un errore durante l'elaborazione della richiesta.
[in] PriorityBoost
Valore costante definito dal sistema in base al quale incrementare la priorità di runtime del thread originale che ha richiesto l'operazione. I valori costanti sono specifici del tipo di dispositivo e sono definiti in Wdm.h. Il formato per i nomi delle costanti è XXX_INCREMENT. Per altre informazioni sui valori di priorità boost, vedere Impostazione dei boost di priorità durante il completamento delle richieste di I/O.
Valore restituito
nessuno
Osservazioni
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Il driver deve chiamare WdfRequestCompleteWithPriorityBoost se si vuole eseguire l'override del boost di priorità predefinito fornito dal framework. Ad esempio, il driver potrebbe impostare il boost di priorità su IO_NO_INCREMENT se è stato in grado di completare rapidamente la richiesta, forse perché ha rilevato un errore.
Dopo la restituzione di una chiamata a WdfRequestCompleteWithPriorityBoost , l'handle della richiesta non è più valido a meno che il driver non abbia chiamato WdfObjectReference per aggiungere uno o più conteggi di riferimenti aggiuntivi all'oggetto richiesta. Si noti che dopo la restituzione di WdfRequestCompleteWithPriorityBoost , il driver non deve tentare di accedere alla struttura WDM IRP associata, anche se ha chiamato WdfObjectReference.
Per altre informazioni sulla chiamata a WdfRequestCompleteWithPriorityBoost, vedere Completamento delle richieste di I/O.
Esempio
Nell'esempio di codice seguente viene illustrato come l'esempio in WdfRequestComplete può usare WdfRequestCompleteWithPriorityBoost anziché WdfRequestComplete.
switch (params.Type) {
case WdfRequestTypeRead:
length = params.Parameters.Read.Length;
direction = WdfDmaDirectionReadFromDevice;
break;
case WdfRequestTypeWrite:
length = params.Parameters.Write.Length;
direction = WdfDmaDirectionWriteToDevice;
break;
default:
WdfRequestCompleteWithPriorityBoost(
Request,
STATUS_INVALID_PARAMETER,
IO_NO_INCREMENT
);
return;
}