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

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

Синтаксис

void NdisInterlockedAddUlong(
  [in]  _Addend,
  [in]  _Increment,
  [in]  _SpinLock
);

Параметры

[in] _Addend

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

[in] _Increment

Значение, которое необходимо добавить в поле Addend .

[in] _SpinLock

Указатель на инициализированную вызывающей спиновую блокировку.

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

None

Remarks

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

Значение SpinLock , передаваемое функции NdisInterlockedAddUlong , используется для гарантии того, что добавление переменной в параметре Addend является атомарным по отношению к любым другим операциям с той же переменной, которые синхронизируются с той же спиновой блокировкой.

NdisInterlockedAddUlong вызывает irQL до DISPATCH_LEVEL при получении заданной блокировки спина и восстанавливает исходный IRQL, прежде чем он возвращает управление. Следовательно, любая функция драйвера, которая вызывает NdisInterlockedAddUlong , не может быть страничным кодом.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisInterlockedAddUlong (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisInterlockedAddUlong (NDIS 5.1)) в Windows XP.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL Любой уровень

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

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisReleaseSpinLock

NdisRetrieveUlong

NdisStoreUlong