Bagikan melalui


Fungsi KeAcquireInStackQueuedSpinLock (wdm.h)

Rutinitas KeAcquireInStackQueuedSpinLock memperoleh kunci spin antrean.

Sintaksis

void KeAcquireInStackQueuedSpinLock(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

Parameter

SpinLock

[masuk, keluar] Menentukan kunci putar yang akan diperoleh. Parameter ini harus diinisialisasi dengan KeInitializeSpinLock.

LockHandle

[out] Pointer ke variabel KLOCK_QUEUE_HANDLE yang disediakan penelepon yang dapat digunakan rutinitas untuk mengembalikan handel antrean kunci putar. Pemanggil meneruskan nilai ini ke KeReleaseInStackQueuedSpinLock saat melepaskan kunci. Driver biasanya harus mengalokasikan struktur pada tumpukan setiap kali mereka memperoleh kunci. Driver tidak boleh menggunakan KLOCK_QUEUE_HANDLE yang sama dari beberapa situs panggilan.

Mengembalikan nilai

Tidak

Komentar

KeAcquireInStackQueuedSpinLock memperoleh kunci putar sebagai kunci putar yang diantrekan . Untuk informasi selengkapnya, lihat Kunci Putar antrean. Pemanggil melepaskan kunci putar dengan memanggil rutinitas KeReleaseInStackQueuedSpinLock .

Seperti kunci spin biasa, kunci spin yang diantrekan hanya boleh digunakan dalam keadaan yang sangat khusus. Untuk deskripsi kapan menggunakan kunci spin, lihat KeAcquireSpinLock.

Rutinitas ini meningkatkan tingkat IRQL ke DISPATCH_LEVEL saat memperoleh kunci putaran. Jika pemanggil dijamin sudah berjalan pada DISPATCH_LEVEL, lebih efisien untuk memanggil KeAcquireInStackQueuedSpinLockAtDpcLevel.

Panggilan ke KeReleaseInStackQueuedSpinLock yang melepaskan kunci putar harus terjadi di IRQL = DISPATCH_LEVEL. Panggilan ini memulihkan IRQL asli yang disimpan sistem operasi di awal panggilan KeAcquireInStackQueuedSpinLock . Jika driver memperoleh beberapa kunci putaran antrean dalam seri, driver harus melepaskannya secara terbalik untuk memulihkan IRQL asli dengan benar.

Driver tidak boleh menggabungkan panggilan ke KeAcquireSpinLock dan KeAcquireInStackQueuedSpinLock pada kunci putar yang sama. Kunci putar harus selalu diperoleh atau dilepaskan sebagai kunci putaran antrean, atau sebagai kunci putaran biasa.

Persyaratan

Syarat Nilai
Header wdm.h (termasuk Wdm.h)
IRQL IRQL <= DISPATCH_LEVEL
aturan kepatuhan DDI HwStorPortProhibitedDIs (storport), MarkingQueuedIrps(wdm), QueuedSpinLock (storport),QueuedSpinLock(wdm), QueuedSpinLockRelease (storport), QueuedSpinLockRelease(wdm)

Lihat juga

KLOCK_QUEUE_HANDLE

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLock