Fungsi InterlockedCompareExchangePointer (wdm.h)

Rutinitas InterlockedCompareExchangePointer melakukan operasi atomik yang membandingkan nilai penunjuk input yang ditunjukkan oleh Tujuan dengan nilai pointer Comperand.

Sintaks

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Parameter

[in, out] Destination

Penunjuk ke nilai PVOID. Jika (*Tujuan) = Comperand, maka set rutin (*Tujuan) ke Exchange.

[in] Exchange

Menentukan nilai PVOID yang akan diatur (*Tujuan) ke.

[in] Comperand

Menentukan nilai PVOID untuk dibandingkan dengan (*Tujuan).

Nilai kembali

InterlockedCompareExchangePointer mengembalikan nilai asli pointer di *Destination (yaitu, nilai pointer ini pada entri ke rutinitas).

Keterangan

Jika Comperand sama dengan *Tujuan, maka *Tujuan diatur ke Exchange yang sama. Jika tidak, *Tujuan tidak berubah.

InterlockedCompareExchangePointer menyediakan cara atom yang cepat untuk menyinkronkan pengujian dan pembaruan variabel penunjuk yang dibagikan oleh beberapa utas. Jika nilai input yang ditunjukkan oleh Tujuan sama dengan nilai Comperand, nilai yang ditunjukkan oleh Tujuan diatur ke nilai Exchange.

InterlockedCompareExchangePointer dirancang untuk kecepatan dan, biasanya, diimplementasikan sebaris oleh kompilator. InterlockedCompareExchangePointer hanya bersifat atomik sehubungan dengan panggilan Xxx lain yang diblokir. Ini tidak menggunakan kunci putar dan dapat digunakan dengan aman pada data yang dapat di-pageable.

Rutinitas InterlockedCompareExchangePointer hanya bersifat atomik sehubungan dengan panggilan Xxx yang di-Interlocked lainnya.

Operasi yang saling dikunci tidak dapat digunakan pada memori yang tidak di-cache.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
IRQL Tingkat apa pun

Lihat juga

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer