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