Condividi tramite


Funzione ExInterlockedAddLargeInteger (wdm.h)

La routine exInterlockedAddLargeInteger aggiunge un valore intero grande alla variabile specificata come operazione atomica.

Sintassi

LARGE_INTEGER ExInterlockedAddLargeInteger(
  [in, out] PLARGE_INTEGER Addend,
  [in]      LARGE_INTEGER  Increment,
  [in, out] PKSPIN_LOCK    Lock
);

Parametri

[in, out] Addend

Puntatore alla variabile da regolare in base al valore incremento.

[in] Increment

Specifica un valore da aggiungere a Addend.

[in, out] Lock

Puntatore a un blocco di selezione da usare per sincronizzare l'accesso a Addend.

Valore restituito

ExInterlockedAddLargeInteger restituisce il valore iniziale del parametro Addend .

Osservazioni

Si presuppone che le routine di supporto che eseguono operazioni interlock non siano in grado di causare un errore di pagina. Ovvero, né il codice né i dati che toccano possono causare un errore di pagina senza arrestare il sistema. Usano blocchi di selezione per ottenere l'atomicità nei computer multiprocessore simmetrici. Il chiamante deve fornire spazio di archiviazione residente per l'Lock, che deve essere inizializzato con KeInitializeSpinLock prima della chiamata iniziale a un ExInterlockedXxx.

Il Lock passato a exInterlockedAddLargeInteger viene usato per garantire che l'operazione di aggiunta su Addend sia atomica rispetto a qualsiasi altra operazione sullo stesso valore che si sincronizza con lo stesso blocco di selezione.

gli interrupt di maschera exInterlockedAddLargeInteger. Di conseguenza, può essere usato per la sincronizzazione tra un ISR e un altro codice driver di dispositivo, purché lo stesso Blocco non venga mai riutilizzato in una chiamata a una routine eseguita in IRQL = DISPATCH_LEVEL.

Si noti che le chiamate a Xxx interlocked sono sicuramente atomiche rispetto ad altri chiamate interlockedXxx senza blocchi spin forniti dal chiamante.

I chiamanti di ExInterlockedAddLargeInteger eseguiti in qualsiasi IRQL. Lo spazio di archiviazione per il parametro addend deve essere residente in tutti i runtime di integrazione.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows 2000 e versioni successive di Windows. Non disponibile in Windows 98 o Windows Me.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL Qualsiasi livello (vedere la sezione Osservazioni)

Vedere anche

exInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock