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
Aucun
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 de verrouillage de spin doit être résident : dans l’extension de périphérique d’un objet périphérique créé par le pilote, dans l’extension du contrôleur d’un objet de contrôleur créé par un pilote ou dans un pool non paginé alloué par l’appelant.
Cette fonction est incorporée pour les systèmes x64 de Windows XP jusqu’à Windows 7. À compter de Windows 8, cette fonction est exportée à partir de ntoskrnl.lib
. Par conséquent, si vous utilisez Windows 10 WDK pour générer un fichier binaire qui s’exécute sur Windows 7 (et par conséquent, vous avez besoin de l’utilisation du pool NX pour passer des tests HLK Windows 10), 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 verrouillages de rotation.
Les appelants de cette routine peuvent s’exécuter à n’importe quel runtime IRQL. En règle générale, un appelant s’exécute à IRQL = PASSIVE_LEVEL dans une routine AddDevice.
Exigences
Voir aussi
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeReleaseInStackQueuedSpinLock