KeInitializeSpinLock, fonction (wdm.h)
La routine KeInitializeSpinLock initialise une variable de type KSPIN_LOCK.
Syntaxe
void KeInitializeSpinLock(
[out] PKSPIN_LOCK SpinLock
);
Paramètres
[out] SpinLock
Pointeur vers un verrou de rotation pour lequel l’appelant doit fournir le stockage.
Valeur de retour
None
Remarques
Cette routine doit être appelée avant un appel initial à KeAcquireSpinLock, à KeAcquireInStackQueuedSpinLock ou à toute autre routine de prise en charge qui nécessite un verrou de rotation en tant qu’argument.
Le stockage d’un objet spin lock doit être résident : dans l’extension d’appareil d’un objet d’appareil créé par un pilote, dans l’extension de contrôleur d’un objet contrôleur créé par le pilote ou dans un pool non paginé alloué par l’appelant.
Cette fonction est incorporée pour les systèmes x64 de Windows XP à Windows 7. À partir de Windows 8, cette fonction est exportée à partir de ntoskrnl.lib
. Par conséquent, si vous utilisez le Windows 10 WDK pour créer un fichier binaire qui s’exécute sur Windows 7 (et que vous avez donc besoin de l’utilisation du pool NX pour réussir Windows 10 tests HLK), vous devez définir WIN9X_COMPAT_SPINLOCK
. Sinon, vous pouvez voir Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)
.
Pour plus d’informations sur les verrous de rotation, consultez Spin Locks.
Les appelants de cette routine peuvent s’exécuter à n’importe quel IRQL. En règle générale, un appelant s’exécute à IRQL = PASSIVE_LEVEL dans une routine AddDevice .
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | N’importe quel niveau (voir la section Remarques) |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport) |
Voir aussi
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeReleaseInStackQueuedSpinLock