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