KsMoveIrpsOnCancelableQueue, fonction (ks.h)
La fonction KsMoveIrpsOnCancelableQueue déplace les irPs spécifiés du paramètre SourceList vers le paramètre DestinationList en fonction de la valeur retournée par la fonction KStrIrpListCall back définie par le minidriver.
Syntaxe
KSDDKAPI NTSTATUS KsMoveIrpsOnCancelableQueue(
[in, out] PLIST_ENTRY SourceList,
[in] PKSPIN_LOCK SourceLock,
[in, out] PLIST_ENTRY DestinationList,
[in, optional] PKSPIN_LOCK DestinationLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] PFNKSIRPLISTCALLBACK ListCallback,
[in] PVOID Context
);
Paramètres
[in, out] SourceList
Spécifie la tête de la file d’attente à partir de laquelle supprimer les IRPs.
[in] SourceLock
Pointeur vers le verrou de rotation du pilote pour l’accès à la file d’attente source.
[in, out] DestinationList
Spécifie la tête de la file d’attente sur laquelle ajouter les IRPs.
[in, optional] DestinationLock
Contient éventuellement un pointeur vers le verrou de rotation du pilote pour l’accès à la file d’attente de destination. Si ce paramètre n’est pas fourni, le paramètre SourceLock est supposé contrôler les deux files d’attente. S’il est fourni, ce verrou est toujours acquis après le paramètre SourceLock. Si la liste de destination a un verrou de rotation distinct, le verrou de rotation d’annulation à l’échelle du système est d’abord acquis afin de déplacer les irPs et d’autoriser le verrouillage de rotation KSQUEUE_SPINLOCK_IRP_STORAGE() à être mis à jour.
[in] ListLocation
Indique si les fournisseurs d’intégration doivent être énumérés à partir de la tête ou de la fin de la file d’attente source. Les adresses IP virtuelles déplacées sont placées sur la fin opposée de la file d’attente de destination afin que l’ordre soit conservé.
[in] ListCallback
Spécifie la fonction KStrIrpListCall back définie par minidriver pour indiquer si un IRP spécifique doit être déplacé de SourceList à DestinationList, ou si l’énumération doit être arrêtée.
[in] Context
Contexte passé à ListCallback .
Valeur de retour
Retourne STATUS_SUCCESS si la liste a été complètement énumérée ; sinon, retourne tout avertissement ou erreur retourné par le minidriver défini KStrIrpListCallback fonction de rappel qui a interrompu l’énumération.
Remarques
Un IRP est déplacé si la fonction KStrIrpListCallback indique qu’elle doit être déplacée, qu’elle soit actuellement acquise. Si KStrIrpListCallback retourne STATUS_SUCCESS, l’IRP est déplacé. Si elle retourne STATUS_NO_MATCH, l’IRP n’est pas déplacé. Toute autre valeur d’avertissement ou d’erreur de retour met fin à l’énumération et est retournée par la fonction. La valeur STATUS_NO_MATCH ne doit pas être retournée en tant qu’erreur par KStrIrpListCallback. KStrIrpListCallback est appelé à DISPATCH_LEVEL. KStrIrpListCallback est toujours appelée au moins une fois à la fin avec une valeur NULL IRP pour terminer l’énumération de liste.
KsMoveIrpsOnCancelableQueue continue dans la liste jusqu’à ce que la fonction de rappel indique que la recherche doit être terminée ou que la fin de la liste est atteinte. KsMoveIrpsOnCancelableQueue réduit l’utilisation du verrou de rotation d’annulation à l’échelle du système à l’aide des verrous de rotation fournis pour synchroniser l’accès lorsque cela est possible. KsMoveIrpsOnCancelableQueue n’autorise pas la modification de la routine d’annulation lors du déplacement des irPs.
La fonction peut être appelée à DISPATCH_LEVEL ou inférieure.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |
bibliothèque | Ks.lib |