Compartir a través de


Función ExInterlockedAddUlong (wdm.h)

La rutina ExInterlockedAddUlong agrega un valor long sin signo a un entero sin signo determinado como una operación atómica.

Sintaxis

ULONG ExInterlockedAddUlong(
  [in, out] PULONG      Addend,
  [in]      ULONG       Increment,
  [in, out] PKSPIN_LOCK Lock
);

Parámetros

[in, out] Addend

Puntero a un entero largo sin signo cuyo valor se va a ajustar mediante el valor increment .

[in] Increment

Especifica un entero largo sin signo que se va a agregar.

[in, out] Lock

Puntero a un bloqueo de número que se va a usar para sincronizar el acceso al addend.

Valor devuelto

ExInterlockedAddUlong devuelve el valor original (sin enumerar) del Addend.

Comentarios

Considere la posibilidad de usar InterlockedExchangeAdd en lugar de esta rutina. InterlockedExchangeAdd puede ser más eficaz porque no usa un bloqueo de número y el compilador lo inserta.

Se supone que las rutinas de soporte técnico que realizan operaciones interbloqueadas no pueden causar un error de página. Es decir, ni su código ni ninguno de los datos que toca pueden provocar un error de página sin bajar el sistema. Usan bloqueos de giro para lograr la atomicidad en máquinas multiprocesador simétricas. El autor de la llamada debe proporcionar almacenamiento residente para el bloqueo, que debe inicializarse con KeInitializeSpinLock antes de la llamada inicial a un ExInterlockedXxx.

El bloqueo pasado a ExInterlockedAddULong se usa para asegurarse de que la operación de adición en Addend es atómica con respecto a cualquier otra operación en el mismo valor que se sincronice con este mismo bloqueo de número.

ExInterlockedAddUlong enmascara las interrupciones. Por lo tanto, se puede usar para la sincronización entre un ISR y otro código de controlador, siempre que el mismo bloqueo nunca se vuelva a usar en una llamada a una rutina que se ejecuta en IRQL = DISPATCH_LEVEL.

Tenga en cuenta que se garantiza que las llamadas a InterlockedXxx son atómicas con respecto a otras llamadas Xxx interbloqueadas sin bloqueos de número proporcionados por el autor de la llamada.

Los autores de llamadas de ExInterlockedAddUlong se ejecutan en cualquier IRQL. El almacenamiento del parámetro Addend debe estar residente en todas las IRQL.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel (consulte la sección Comentarios)

Consulte también

ExInterlockedAddLargeInteger

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock