Функция InterlockedExchangePointer (wdm.h)

Подпрограмма InterlockedExchangePointer выполняет атомарную операцию, которая задает для указателя новое значение.

Синтаксис

PVOID InterlockedExchangePointer(
  [in, out]      PVOID volatile *Target,
  [in, optional] PVOID          Value
);

Параметры

[in, out] Target

Указатель на значение PVOID. Подпрограмма задает (*Target) значение Value.

[in, optional] Value

Указывает значение PVOID, которое необходимо задать (*Target).

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

InterlockedExchangePointer возвращает исходное значение указателя на *Target (т. е. значение этого указателя при входе в подпрограмму).

Комментарии

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

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

Параметр Target должен быть выровнен по 32-разрядной или 64-разрядной границе в зависимости от типа системы для повышения производительности.

Вызов InterlockedExchangePointer является атомарным только в отношении других вызовов InterlockedXxx .

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

Требования

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

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

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange