Функция InterlockedCompareExchangePointer (wdm.h)
Подпрограмма InterlockedCompareExchangePointer выполняет атомарную операцию, которая сравнивает значение указателя ввода, указываемое назначением с значением указателя Comperand.
Синтаксис
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Параметры
[in, out] Destination
Указатель на значение PVOID. Если (*назначение) = Comperand, то подпрограммные наборы (*назначения) — Exchange.
[in] Exchange
Задает значение PVOID для задания (*целевой) в значение.
[in] Comperand
Указывает значение PVOID для сравнения с (*Назначение).
Возвращаемое значение
InterlockedCompareExchangePointer возвращает исходное значение указателя на *целевой (т. е. значение этого указателя при входе в подпрограмму).
Замечания
Если Comperand равно *назначения, то дляназначения задано значение Exchange. В противном случае *назначения не изменяется.
InterlockedCompareExchangePointer предоставляет быстрый атомарный способ синхронизации тестирования и обновления переменной указателя, к которой используется несколько потоков. Если входное значение, указываемое назначением, равно значению Comperand, то значение, указываемое назначения, имеет значение Exchange.
InterlockedCompareExchangePointer предназначен для скорости и, как правило, реализуется встроенным компилятором. InterlockedCompareExchangePointer атомарен только в отношении других вызовов InterlockedXxx. Он не использует блокировку спина и может безопасно использоваться для страничных данных.
Подпрограмма interlockedCompareExchangePointer атомарна только в отношении других вызовов InterlockedXxx.
Операции с блокировкой нельзя использовать в не кэшированном памяти.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 2000. |
целевая платформа | Настольный |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Любой уровень |