Макрос NdisAcquireSpinLock (ndis.h)

Функция NdisAcquireSpinLock получает спин-блокировку, чтобы вызывающий объект получил монопольный доступ к ресурсам, совместно используемым функциями драйвера, которые защищает спин-блокировка.

Синтаксис

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

Параметры

[in] _SpinLock

Указатель на непрозрачную блокировку спина, уже инициализированную вызывающим элементом.

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

None

Remarks

Драйвер должен инициализировать переменную типа NDIS_SPIN_LOCK с помощью NdisAllocateSpinLock , прежде чем вызывать любую другую функцию NdisXxxSpinLock . Драйвер должен предоставлять резидентные хранилища для блокировок спина, которые он использует.

После получения спин-блокировки с помощью NdisAcquireSpinLock вызывающий объект должен освободить ее с помощью вызова NdisReleaseSpinLock. Драйвер должен вызывать NdisReleaseSpinLock после каждого вызова NdisAcquireSpinLock. В противном случае возникает взаимоблокировка, при этом драйвер зависает.

Спин-блокировка, полученная с помощью NdisAcquireSpinLock , должна быть освобождена с помощью NdisReleaseSpinLock. Спин-блокировка, полученная с помощью NdisDprAcquireSpinLock , должна быть освобождена с помощью NdisDprReleaseSpinLock.

Драйвер никогда не должен удерживать спин-блокировку в течение длительного периода времени (более нескольких инструкций). Удержание спин-блокировки дольше 25 микросекунд снижает производительность системы и драйвера.

Драйвер мини-порта не может использовать блокировку спина для защиты ресурсов, которые его другие функции совместно используют с MiniportInterrupt и /или Функции MiniportDisableInterruptEx . Вместо этого драйвер мини-порта должен вызвать NdisMSynchronizeWithInterruptEx , чтобы егоФункция MiniportSynchronizeInterrupt обращается к таким общим ресурсам в том же DIRQL, в котором он
Функции MiniportInterrupt и (или ) MiniportDisableInterruptEx выполняют.

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisAcquireSpinLock (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisAcquireSpinLock (NDIS 5.1)) в Windows XP.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

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

MiniportDisableInterruptEx

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock