KeAcquireInStackQueuedSpinLock, fonction (wdm.h)
La routine KeAcquireInStackQueuedSpinLock acquiert un verrou de rotation mis en file d’attente.
Syntaxe
void KeAcquireInStackQueuedSpinLock(
PKSPIN_LOCK SpinLock,
PKLOCK_QUEUE_HANDLE LockHandle
);
Paramètres
SpinLock
[in, out] Spécifie le verrou de rotation à acquérir. Ce paramètre doit avoir été initialisé avec KeInitializeSpinLock.
LockHandle
[out] Pointeur vers une variable de KLOCK_QUEUE_HANDLE fournie par l’appelant que la routine peut utiliser pour retourner le handle de file d’attente de verrouillage de rotation. L’appelant transmet cette valeur à KeReleaseInStackQueuedSpinLock lors de la libération du verrou. Les pilotes doivent normalement allouer la structure sur la pile chaque fois qu’ils acquièrent le verrou. Un pilote ne doit pas utiliser le même KLOCK_QUEUE_HANDLE à partir de plusieurs sites appelants.
Valeur de retour
None
Remarques
KeAcquireInStackQueuedSpinLock acquiert un verrou de rotation en tant que verrou de rotation en file d’attente. Pour plus d’informations, consultez Verrous de rotation mis en file d’attente. L’appelant libère le verrou de rotation en appelant la routine KeReleaseInStackQueuedSpinLock .
Comme les verrous de rotation ordinaires, les verrous de rotation mis en file d’attente ne doivent être utilisés que dans des circonstances très spéciales. Pour obtenir une description de l’utilisation des verrous de rotation, consultez KeAcquireSpinLock.
Cette routine élève le niveau IRQL à DISPATCH_LEVEL lors de l’acquisition du verrou de rotation. S’il est garanti que l’appelant s’exécute déjà à DISPATCH_LEVEL, il est plus efficace d’appeler KeAcquireInStackQueuedSpinLockAtDpcLevel.
L’appel à KeReleaseInStackQueuedSpinLock qui libère le verrouillage de rotation doit se produire à IRQL = DISPATCH_LEVEL. Cet appel restaure l’IRQL d’origine que le système d’exploitation a enregistré au début de l’appel KeAcquireInStackQueuedSpinLock .
Les pilotes ne doivent pas combiner les appels à KeAcquireSpinLock et KeAcquireInStackQueuedSpinLock sur le même verrou de rotation. Un verrou de rotation doit toujours être acquis ou libéré en tant que verrou de rotation mis en file d’attente ou en tant que verrou de rotation ordinaire.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wdm.h (include Wdm.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport), MarkingQueuedIrps(wdm), QueuedSpinLock(storport),QueuedSpinLock(wdm), QueuedSpinLockRelease(storport), QueuedSpinLockRelease(wdm) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour