Макрос 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 | Любой уровень |