Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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] Ein Zeiger auf den Speicherort des Benutzermodus, der den Zielwert enthält. 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] Der Exchange-Wert.
Comperand
[in] The value to compare to Destination.
Return value
The function returns the initial value of the Destination parameter.
Remarks
Die verriegelten Funktionen bieten einen einfachen Mechanismus zum Synchronisieren des Zugriffs auf eine Variable, die von mehreren Threads gemeinsam genutzt wird. Diese Funktion ist atomar in Bezug auf Aufrufe anderer verzahnter Funktionen. Es generiert eine vollständige Speicherbarriere, um sicherzustellen, dass Speichervorgänge in der Reihenfolge abgeschlossen werden.
Diese Funktion bietet einen atomaren Vergleichs- und Austauschzugriff auf einen 32-Bit-Wert im Arbeitsspeicher des Benutzermodus. 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. Andernfalls wird kein Vorgang ausgeführt.
Die Funktion löst eine strukturierte Ausnahme aus, wenn der Vorgang fehlschlägt, z. B. wenn die Zieladresse keine gültige Benutzermodusadresse ist oder nicht auf sie zugegriffen werden kann.
Diese Funktion funktioniert auf allen Versionen von Windows, nicht nur auf dem neuesten. 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. Der resultierende Treiber wird jedoch in älteren Versionen von Windows einwandfrei ausgeführt.
Requirements
| Requirement | Value |
|---|---|
| Mindestens unterstützter Client | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Kleiner oder gleich APC_LEVEL |