Fungsi ExInterlockedAddLargeInteger (wdm.h)

Rutinitas ExInterlockedAddLargeInteger menambahkan nilai bilangan bulat besar ke variabel yang ditentukan sebagai operasi atomik.

Sintaks

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

Parameter

[in, out] Addend

Penunjuk ke variabel yang akan disesuaikan dengan nilai Tahapan .

[in] Increment

Menentukan nilai yang akan ditambahkan ke Tambahkan.

[in, out] Lock

Pointer ke kunci putar yang akan digunakan untuk menyinkronkan akses ke Addend.

Nilai kembali

ExInterlockedAddLargeInteger mengembalikan nilai awal parameter Addend .

Keterangan

Rutinitas dukungan yang melakukan operasi yang saling mengunci diasumsikan tidak dapat menyebabkan kesalahan halaman. Artinya, kode atau data apa pun yang mereka sentuh tidak dapat menyebabkan kesalahan halaman tanpa menurunkan sistem. Mereka menggunakan kunci spin untuk mencapai atomitas pada mesin multiprosedor simetris. Pemanggil harus menyediakan penyimpanan residen untuk Kunci, yang harus diinisialisasi dengan KeInitializeSpinLock sebelum panggilan awal ke Xxx exInterlocked.

Kunci yang diteruskan ke ExInterlockedAddLargeInteger digunakan untuk memastikan bahwa operasi penambahan pada Addend adalah atomik sehubungan dengan operasi lain pada nilai yang sama yang disinkronkan dengan kunci putar yang sama ini.

ExInterlockedAddLargeInteger menyela. Akibatnya, ini dapat digunakan untuk sinkronisasi antara ISR dan kode driver perangkat lainnya, asalkan Kunci yang sama tidak pernah digunakan kembali dalam panggilan ke rutinitas yang berjalan di IRQL = DISPATCH_LEVEL.

Perhatikan bahwa panggilan ke Interlocked Xxx dijamin atom sehubungan dengan panggilan Xxx lain yang diblokir tanpa kunci putar yang disediakan penelepon.

Penelepon ExInterlockedAddLargeInteger berjalan di IRQL apa pun. Penyimpanan untuk parameter Addend harus residen di semua IRQL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 2000 dan versi Windows yang lebih baru. Tidak tersedia di Windows 98 atau Windows Me.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Tingkat apa pun (lihat bagian Keterangan)

Lihat juga

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock