Partager via


KeAcquireSpinLockAtDpcLevel, macro (wdm.h)

La routine KeAcquireSpinLockAtDpcLevel acquiert un verrou de rotation lorsque l’appelant est déjà en cours d’exécution à IRQL >= DISPATCH_LEVEL.

Syntaxe

void KeAcquireSpinLockAtDpcLevel(
  [in, out] PKSPIN_LOCK SpinLock
);

Paramètres

[in, out] SpinLock

Pointeur vers un verrou de rotation KSPIN_LOCK initialisé pour lequel l’appelant doit fournir le stockage. Le verrou de rotation doit provenir d’un pool non paginé.

Valeur de retour

None

Remarques

Les pilotes appellent KeAcquireSpinLockAtDpcLevel au lieu de KeAcquireSpinLock pour de meilleures performances de pilote si et seulement s’ils s’exécutent déjà à un IRQL de DISPATCH_LEVEL ou supérieur.

Si un pilote s’exécute sur IRQL <= APC_LEVEL, il doit appeler KeAcquireSpinLock pour que IRQL soit déclenché par cette routine. KeAcquireSpinLockAtDpcLevel suppose que l’appelant est déjà en cours d’exécution à IRQL >= DISPATCH_LEVEL, donc aucune augmentation n’est nécessaire.

L’appelant doit libérer le verrou de rotation avec KeReleaseSpinLockFromDpcLevel aussi rapidement que possible.

Pour plus d’informations sur les verrous de rotation, consultez Verrous de rotation.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Consultez la section Notes.
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Voir aussi

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel