LONG
InterlockedExchangeAdd(
IN OUT PLONG Addend,
IN LONG Value
);
InterlockedExchangeAdd adds a value to a given integer as an atomic operation and returns the initial value of the given integer.
Parameters
Addend
Points to an integer that will have Value added to it.
Value
Is the value to be added to Addend.
Return Value
InterlockedExchangeAdd returns the original (unsummed) value of the Addend variable.
Comments
This routine should be used in place of the previous ExInterlockedAddUlong. The new routine is faster and more efficient. It is implemented inline by the compiler when appropriate and possible. It does not require a spin lock and can therefore be safely used on pageable data.
The InterlockedExchangeAdd routine is atomic only with respect to other InterlockedXxx calls.
Callers of InterlockedExchangeAdd run at any IRQL.
See Also
InterlockedIncrement, InterlockedDecrement, ExInterlockedAddLargeInteger, ExInterlockedAddUlong