Функция KeInitializeSpinLock (wdm.h)
Подпрограмма keInitializeSpinLock инициализирует переменную типа KSPIN_LOCK.
Синтаксис
void KeInitializeSpinLock(
[out] PKSPIN_LOCK SpinLock
);
Параметры
[out] SpinLock
Указатель на блокировку спина, для которой вызывающий объект должен предоставить хранилище.
Возвращаемое значение
Никакой
Замечания
Эта подпрограмма должна вызываться перед первоначальным вызовом KeAcquireSpinLock, чтобы KeAcquireInStackQueuedSpinLockили к любой другой подпрограмме поддержки, требующей блокировки спина в качестве аргумента.
Хранилище для объекта блокировки спина должно быть резидентом: в расширении устройства созданного драйвером объекта устройства, в расширении контроллера объекта контроллера, созданного драйвером, или в непакованном пуле, выделенном вызывающим объектом.
Эта функция применяется для систем x64 из Windows XP до Windows 7. Начиная с Windows 8 эта функция экспортируется из ntoskrnl.lib
. В результате, если вы используете Windows 10 WDK для создания двоичного файла, работающего в Windows 7 (поэтому для передачи тестов HLK windows 10 NX требуется использование пула NX), необходимо определить WIN9X_COMPAT_SPINLOCK
. В противном случае может отображаться Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)
.
Дополнительные сведения о блокировках спина см. в разделе Spin Locks.
Вызывающие функции этой подпрограммы могут выполняться в любом IRQL. Обычно вызывающий объект выполняется в IRQL = PASSIVE_LEVEL в подпрограмме AddDevice.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень (см. раздел "Примечания") |
правил соответствия DDI | HwStorPortProhibitedDIs(storport) |
См. также
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeReleaseInStackQueuedSpinLock