Функция InterlockedExchangeAdd (miniport.h)

Подпрограмма InterlockedExchangeAdd добавляет значение к заданному целому числу в качестве атомарной операции и возвращает исходное значение заданного целого числа.

Синтаксис

LONG InterlockedExchangeAdd(
  [in, out] LONG volatile *Addend,
  [in]      LONG          Value
);

Параметры

[in, out] Addend

Указатель на целочисленную переменную.

[in] Value

Указывает значение, добавляемое в надстройку.

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

InterlockedExchangeAdd возвращает исходное значение переменной Addend при вызове.

Комментарии

Вместо ExInterlockedAdd Следует использовать InterlockedExchangeAdd, так как он работает быстрее и эффективнее.

InterlockedExchangeAdd реализуется компилятором, когда это необходимо и возможно. Он не требует спин-блокировки и поэтому может безопасно использоваться для страничных данных.

InterlockedExchangeAdd является атомарным только по отношению к другим вызовам InterlockedXxx .

Операции с блокировкой нельзя использовать в не кэшированных памяти.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть miniport.h (включает Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Библиотека OneCoreUAP.lib в Windows 10
IRQL Любой уровень

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

ExInterlockedAddLargeInteger

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement