Функция 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 | Любой уровень |