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;
}