Condividi tramite


Funzione ExInterlockedAddLargeInteger (wdm.h)

La routine ExInterlockedAddLargeInteger aggiunge un valore intero di grandi dimensioni 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 Increment .

[in] Increment

Specifica un valore da aggiungere a Addend.

[in, out] Lock

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

Valore restituito

ExInterlockedAddLargeInteger restituisce il valore iniziale del parametro Addend .

Commenti

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 rotazione per ottenere l'atomicità nei computer multiprocessore simmetrici. Il chiamante deve fornire l'archiviazione residente per il blocco, che deve essere inizializzato con KeInitializeSpinLock prima della chiamata iniziale a un oggettoExInterlocked Xxx.

Il blocco passato a ExInterlockedAddLargeInteger viene usato per garantire che l'operazione di aggiunta su Addend sia atomica rispetto a tutte le altre operazioni sullo stesso valore che si sincronizzano con lo stesso blocco spin.

Le maschere ExInterlockedAddLargeInteger interrompono. Di conseguenza, può essere usato per la sincronizzazione tra un ISR e un altro codice del 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 Interlocked Xxx sono sicuramente atomiche rispetto ad altre chiamate Xxx interlocked senza blocchi di rotazione forniti dal chiamante.

I chiamanti di ExInterlockedAddLargeInteger vengono eseguiti in qualsiasi IRQL. Lo spazio di archiviazione per il parametro Addend deve essere residente in tutti i valori IRQLs.

Requisiti

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)

Vedi anche

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock