Fonction IofCompleteRequest (wdm.h)
La macro IoCompleteRequest indique que l’appelant a terminé tout le traitement d’une demande d’E/S donnée et qu’il retourne l’IRP donné au gestionnaire d’E/S.
IoCompleteRequest encapsule IofCompleteRequest.
Syntaxe
void IofCompleteRequest(
PIRP Irp,
CCHAR PriorityBoost
);
Paramètres
Irp
Pointeur vers l’IRP à terminer.
PriorityBoost
Spécifie une constante CCHAR 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. Cette valeur est IO_NO_INCREMENT si le thread d’origine a demandé une opération que le pilote peut effectuer rapidement (de sorte que le thread demandeur n’est pas indemnisé pour son attente supposée d’E/S terminée) ou si l’IRP est terminé avec une erreur. Sinon, l’ensemble des constantes PriorityBoost est spécifique au type d’appareil. Pour connaître ces constantes, consultez Ntddk.h ou Wdm.h.
Valeur de retour
None
Remarques
Lorsqu’un pilote a terminé tout le traitement d’un IRP donné, il appelle IoCompleteRequest. Le gestionnaire d’E/S vérifie l’IRP pour déterminer si des pilotes de niveau supérieur ont configuré une routine IoCompletion pour l’IRP. Si c’est le cas, chaque routine IoCompletion est appelée, à son tour, jusqu’à ce que chaque pilote en couches de la chaîne ait terminé l’IRP.
Lorsque tous les pilotes ont effectué une IRP donnée, le gestionnaire d’E/S retourne status au demandeur d’origine de l’opération. Notez qu’un pilote de niveau supérieur qui configure un IRP créé par un pilote doit fournir une routine IoCompletion pour libérer l’IRP qu’elle a créée.
N’appelez jamais IoCompleteRequest en tenant un verrou de rotation. La tentative d’effectuer une IRP tout en tenant un verrou de rotation peut entraîner des interblocages.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | CompleteRequest, CompleteRequestStatusCheck, DoubleCompletion(wdm), HwStorPortProhibitedDDDIs(storport), IoAllocateComplete, IoBuildFsdComplete, IoSetCompletionExCompleteIrp, IrpProcessingComplete(wdm), MarkIrpPending, PendedCompletedRequest(wdm), PendedCompletedRequest2, PendedCompletedRequest3, PendedCompletedRequestEx(wdm), PnpIrpCompletion(wdm), SpinLockSafe(storport), SpinLockSafe(wdm), WmiComplete(wdm) |