Поделиться через


Функция KeInitializeSpinLock (wdm.h)

Подпрограмма KeInitializeSpinLock инициализирует переменную типа KSPIN_LOCK.

Синтаксис

void KeInitializeSpinLock(
  [out] PKSPIN_LOCK SpinLock
);

Параметры

[out] SpinLock

Указатель на спин-блокировку, для которой вызывающий объект должен предоставить хранилище.

Возвращаемое значение

None

Remarks

Эта подпрограмма должна вызываться перед первоначальным вызовом KeAcquireSpinLock, KeAcquireInStackQueuedSpinLock или любой другой подпрограммы поддержки, требующей спин-блокировки в качестве аргумента.

Хранилище для объекта spin lock должно быть резидентным: в расширении устройства объекта устройства, созданного драйвером, в расширении контроллера созданного драйвером объекта контроллера или в невыгружаемом пуле, выделенном вызывающим объектом.

Эта функция встраивается в системы x64 от Windows XP до Windows 7. Начиная с Windows 8, эта функция экспортируется из ntoskrnl.lib. В результате, если вы используете Windows 10 WDK для создания двоичного файла, работающего в Windows 7 (поэтому для прохождения Windows 10 тестов HLK требуется использование пула NX), необходимо определить WIN9X_COMPAT_SPINLOCK. В противном случае может отображаться .Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)

Дополнительные сведения о спин-блокировках см. в разделе Спин-блокировки.

Вызывающие абоненты этой подпрограммы могут выполняться в любой среде IRQL. Как правило, вызывающий объект выполняется в среде IRQL = PASSIVE_LEVEL в подпрограмме AddDevice .

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDIS(storport)

См. также раздел

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel