Функция KeInitializeSpinLock (wdm.h)
Подпрограмма KeInitializeSpinLock инициализирует переменную типа KSPIN_LOCK.
Синтаксис
void KeInitializeSpinLock(
[out] PKSPIN_LOCK SpinLock
);
Параметры
[out] SpinLock
Указатель на спин-блокировку, для которой вызывающий объект должен предоставить хранилище.
Возвращаемое значение
None
Remarks
Эта подпрограмма должна вызываться перед начальным вызовом KeAcquireSpinLock, к KeAcquireInStackQueuedSpinLock или любой другой подпрограмме поддержки, требующей спин-блокировки в качестве аргумента.
Хранилище для объекта спин-блокировки должно находиться в расширении устройства объекта устройства, созданного драйвером, в расширении контроллера объекта контроллера, созданного драйвером, или в непакованном пуле, выделенном вызывающим объектом.
Примечание
Эта функция встраина для систем x64 из Windows XP до Windows 7.
Начиная с Windows 8 эта функция экспортируется из ntoskrnl.lib
. В результате, если вы используете Windows 10 WDK для создания двоичного файла, работающего в Windows 7 (и, следовательно, требуется использование пула NX для передачи Windows 10 тестов HLK), необходимо определить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 | HwStorPortProhibitedDDIs(storport) |
См. также раздел
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeReleaseInStackQueuedSpinLock