WdfRequestCompleteWithPriorityBoost, fonction (wdfrequest.h)

[S’applique uniquement à KMDF]

La méthode WdfRequestCompleteWithPriorityBoost exécute une demande d’E/S spécifiée et fournit une status d’achèvement. Il spécifie également une valeur que le système peut utiliser pour augmenter la priorité d’exécution du thread qui a demandé l’opération d’E/S.

Syntaxe

void WdfRequestCompleteWithPriorityBoost(
  [in] WDFREQUEST Request,
  [in] NTSTATUS   Status,
  [in] CCHAR      PriorityBoost
);

Paramètres

[in] Request

Handle de l’objet de demande d’infrastructure qui représente la demande d’E/S en cours d’exécution.

[in] Status

Valeur NTSTATUS qui représente le status d’achèvement de la demande. Les valeurs status valides incluent, sans s’y limiter, les éléments suivants :

STATUS_SUCCESS

Le pilote a correctement effectué la demande.

STATUS_CANCELLED

Le pilote a annulé la demande.

STATUS_UNSUCCESSFUL

Le pilote a rencontré une erreur lors du traitement de la demande.

[in] PriorityBoost

Valeur constante définie par le système par laquelle incrémenter la priorité d’exécution du thread d’origine qui a demandé l’opération. Les valeurs constantes sont spécifiques au type d’appareil et sont définies dans Wdm.h. Le format des noms de constante est XXX_INCREMENT. Pour plus d’informations sur les valeurs d’augmentation de priorité, consultez Spécification des augmentations de priorité lors de la fin des demandes d’E/S.

Valeur de retour

None

Remarques

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Votre pilote doit appeler WdfRequestCompleteWithPriorityBoost si vous souhaitez remplacer l’augmentation de priorité par défaut que le framework fournit. Par exemple, le pilote peut définir l’augmentation de priorité sur IO_NO_INCREMENT s’il a pu exécuter la demande rapidement, peut-être parce qu’il a détecté une erreur.

Une fois qu’un appel à WdfRequestCompleteWithPriorityBoost est retourné, le handle de requête n’est plus valide, sauf si le pilote a appelé WdfObjectReference pour ajouter un ou plusieurs nombres de références supplémentaires à l’objet de requête. Notez qu’après le retour de WdfRequestCompleteWithPriorityBoost , le pilote ne doit pas tenter d’accéder à la structure IRP WDM associée, même s’il a appelé WdfObjectReference.

Pour plus d’informations sur l’appel de WdfRequestCompleteWithPriorityBoost, consultez Terminer les demandes d’E/S.

Exemples

L’exemple de code suivant montre comment l’exemple de WdfRequestCompleteWithPriorityBoost peut utiliser WdfRequestCompleteWithPriorityBoost au lieu de 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;
    }

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfrequest.h (include Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI BufAfterReqCompletedIntIoctl(kmdf),BufAfterReqCompletedIntIoctlA(kmdf),BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf),BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), CompleteCanceledReq(kmdf), DeferredRequestCompleted(kmdf), DoubleCompletion(kmdf), DoubleCompletionLocal(kmdf),DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), EvtSurpriseRemoveNoRequestComplete(kmdf), InvalidReqAccess(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MarkCancOnCancReqLocal(kmdf), MdlAfterReqCompletedIntIoctl(kmdf), MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctl(kmdf),MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedRead(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWrite(kmdf),MdlAfterReqCompletedWriteA(kmdf),MemAfterReqCompletedIntIoctl(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctl(kmdf), MemAfterReqCompletedRead(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWrite(kmdf), MemAfterReqCompletedWriteA(kmdf), NoCancelFromEvtSurpriseRemove(kmdf),ReqDelete(kmdf), ReqIsCancOnCancReq(kmdf), ReqNotCanceledLocal(kmdf), ReqSendFail(kmdf), RequestCompleted(kmdf), RequestCompletedLocal(kmdf)

Voir aussi

WdfObjectReference

WdfRequestComplete

WdfRequestCompleteWithInformation