Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
The InterlockedCompareExchangeToUser function performs an atomic compare-and-exchange operation on a 32-bit value in user-mode memory.
Syntax
LONG InterlockedCompareExchangeToUser(
LONG volatile *Destination,
LONG ExChange,
LONG Comperand
);
Parameters
Destination
[in, out] Указатель на расположение памяти в пользовательском режиме, содержащее целевое значение. The pointer must be naturally aligned for the data type; that is, the memory location must be 4-byte aligned since Destination points to a 4-byte type.
ExChange
[in] Значение обмена.
Comperand
[in] The value to compare to Destination.
Return value
The function returns the initial value of the Destination parameter.
Remarks
Межблокированные функции предоставляют простой механизм синхронизации доступа к переменной, к которой используется несколько потоков. Эта функция атомарна относительно вызовов других взаимоблокируемых функций. Он создает полный барьер памяти, чтобы обеспечить выполнение операций памяти в порядке.
Эта функция предоставляет атомарный доступ к 32-разрядному значению в памяти пользовательского режима. The function compares the Destination value with the Comperand value. If the Destination value is equal to the Comperand value, the ExChange value is stored in the address specified by Destination. В противном случае операция не выполняется.
Функция вызывает структурированное исключение, если операция завершается ошибкой, например если целевой адрес не является допустимым адресом пользовательского режима или недоступен.
Эта функция работает во всех версиях Windows, а не только на последних версиях. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. Однако результирующий драйвер будет работать в более ранних версиях Windows.
Requirements
| Requirement | Value |
|---|---|
| Минимальный поддерживаемый клиент | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Меньше или равно APC_LEVEL |