Макрос ExInterlockedCompareExchange64 (wdm.h)
Подпрограмма ExInterlockedCompareExchange64 сравнивает одну целочисленную переменную с другой и, если они равны, присваивает первой переменной значение, предоставленное вызывающим.
Синтаксис
void ExInterlockedCompareExchange64(
[in, out] Destination,
[in] Exchange,
Comperand,
[in] Lock
);
Параметры
[in, out] Destination
Указатель на целое число, которое будет сравниваться и, возможно, заменяться.
[in] Exchange
Указатель на целое число, которое заменит значение в destination , если сравнение приводит к равенству.
Comperand
Указатель на целое число, с которым будет сравниваться значение в пункте Назначения .
[in] Lock
Указатель на выделенную вызывающим объектом спин-блокировку, которая используется, если ведущая система не поддерживает 8-байтовую атомарную операцию сравнения и обмена.
Возвращаемое значение
None
Remarks
Этот макрос заключает в оболочку InterlockedCompareExchange64 или ExfInterlockedCompareExchange64 и предполагает возвращаемое значение типа LONGLONG.
ExInterlockedCompareExchange64 проверяет и, возможно, заменяет значение заданной переменной. Для большинства базовых микропроцессоров эта подпрограмма реализуется компилятором в виде атомарной операции. Если используется спиновая блокировка, эту процедуру можно безопасно использовать только для параметров без пампов.
Если значения Destination и Comparand не равны, ExInterlockedCompareExchange64 просто возвращает значение Destination.
ExInterlockedCompareExchange64 является атомарным только в отношении других вызовов (Ex)InterlockedXxx .
Вызывающие методы ExInterlockedCompareExchange64 могут выполняться в любом IRQL. Хранилище для параметров Destination, Comparand и Exchange , а также записей списка должны находиться во всех списках IRQL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень (см. раздел "Примечания") |