Fungsi ExInterlockedAddUlong (wdm.h)

Rutinitas ExInterlockedAddUlong menambahkan nilai panjang yang tidak ditandatangani ke bilangan bulat yang tidak ditandatangani tertentu sebagai operasi atomik.

Sintaks

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

Parameter

[in, out] Addend

Penunjuk ke bilangan bulat panjang yang tidak ditandatangani yang nilainya akan disesuaikan dengan nilai Tahapan .

[in] Increment

Menentukan bilangan bulat panjang yang tidak ditandatangani untuk ditambahkan.

[in, out] Lock

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

Nilai kembali

ExInterlockedAddUlong mengembalikan nilai asli (tidak disarankan) dari Addend.

Keterangan

Pertimbangkan untuk menggunakan InterlockedExchangeAdd alih-alih rutinitas ini. InterlockedExchangeAdd bisa lebih efisien karena tidak menggunakan kunci putaran dan diinlined oleh kompilator.

Rutinitas dukungan yang melakukan operasi yang saling di-interlock diasumsikan tidak mampu menyebabkan kesalahan halaman. Artinya, kode mereka maupun data apa pun yang mereka sentuh tidak dapat menyebabkan kesalahan halaman tanpa menurunkan sistem. Mereka menggunakan kunci spin untuk mencapai atomitas pada mesin multiproscessor simetris. Penelepon harus menyediakan penyimpanan residen untuk Lock, yang harus diinisialisasi dengan KeInitializeSpinLock sebelum panggilan awal ke ExInterlockedXxx.

Kunci yang diteruskan ke ExInterlockedAddULong 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.

ExInterlockedAddUlong masker mengganggu. Akibatnya, ini dapat digunakan untuk sinkronisasi antara ISR dan kode driver 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 yang saling di-interlock tanpa kunci spin yang disediakan penelepon.

Pemanggil ExInterlockedAddUlong berjalan di IRQL apa pun. Penyimpanan untuk parameter Addend harus residen di semua IRQL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
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

ExInterlockedAddLargeInteger

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock