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


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

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

Синтаксис

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

Параметры

[in] _Addend

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

[in] _Increment

Значение, которое необходимо добавить в надстройки.

[in] _SpinLock

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

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

Никакой

Замечания

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

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

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 (include Ndis.h)
библиотеки Ndis.lib
IRQL Любой уровень

См. также

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisReleaseSpinLock

NdisRetrieveUlong

NdisStoreUlong