Fungsi KeAcquireInterruptSpinLock (wdm.h)

Rutinitas KeAcquireInterruptSpinLock memperoleh kunci putaran yang terkait dengan objek interupsi.

Sintaks

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

Parameter

Interrupt

[in, out] Menentukan penunjuk ke objek interupsi. Nilai ini harus disediakan oleh IoConnectInterrupt atau IoConnectInterruptEx.

Nilai kembali

KeAcquireInterruptSpinLock mengembalikan IRQL saat ini pada saat rutinitas dipanggil. Nilai ini diteruskan ke KeReleaseInterruptSpinLock ketika kunci putar dilepaskan.

Keterangan

Driver menggunakan kunci spin interupsi untuk menyinkronkan akses ke memori yang dibagikan dengan ISR interupsi. Driver dapat melepaskan kunci putar dengan memanggil KeReleaseInterruptSpinLock.

Kode apa pun yang dijalankan saat kunci spin interupsi ditahan melakukannya di IRQL = DIRQL untuk Interupsi yang ditentukan, sehingga harus dijalankan dengan sangat cepat. Untuk informasi selengkapnya, lihat Menggunakan Bagian Penting.

Cara yang disukai untuk menyinkronkan rutinitas driver ke ISR adalah dengan menggunakan rutinitas KeSynchronizeExecution .

Dimulai dengan Windows 8, driver dapat menggunakan IoConnectInterruptEx untuk mendaftarkan rutinitas layanan interupsi yang berjalan di IRQL = PASSIVE_LEVEL dan yang tidak menggunakan kunci spin untuk sinkronisasi interupsi. Jika Interupsi menunjuk ke objek interupsi yang terhubung ke ISR tingkat pasif, KeAcquireInterruptSpinLock menyebabkan pemeriksaan bug. Untuk informasi selengkapnya, lihat Menggunakan Rutinitas Layanan Interupsi Passive-Level.

Penelepon harus berjalan di IRQL <= DIRQL untuk Interupsi. (Ini adalah nilai yang diteruskan driver sebagai parameter SynchronizeIrql dari IoConnectInterrupt saat Interupsi dibuat.)

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP
Header wdm.h
IRQL <= DIRQL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport)

Lihat juga

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution