Metode IWDFInterrupt::AcquireInterruptLock (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode AcquireInterruptLock memulai urutan kode yang dijalankan sambil menahan kunci objek interupsi.

Sintaks

void AcquireInterruptLock();

Mengembalikan nilai

Tidak ada

Keterangan

Ketika driver memanggil AcquireInterruptLock, sistem memperoleh kunci interupsi kerangka kerja.

Ketika driver memanggil ReleaseInterruptLock, sistem melepaskan kunci interupsi.

Anda dapat menggunakan AcquireInterruptLock dan ReleaseInterruptLock jika driver Anda harus menjalankan beberapa baris kode tanpa didahulukan dan dengan layanan interupsi dinonaktifkan.

Driver Anda tidak dapat memanggil AcquireInterruptLock sebelum kerangka kerja memanggil fungsi panggilan balik OnInterruptEnable driver atau setelah kerangka kerja memanggil fungsi panggilan balik OnInterruptDisable driver.

Setelah driver Anda memanggil AcquireInterruptLock, ia tidak boleh memanggil metode lagi untuk objek interupsi yang sama sebelum memanggil ReleaseInterruptLock.

Saat berjalan dalam utas arbitrer, seperti metode panggilan balik antrean I/O, driver harus memanggil IWDFInterrupt::TryToAcquireInterruptLock alih-alih IWDFInterrupt::AcquireInterruptLock. Misalnya, driver memanggil IWDFInterrupt::TryToAcquireInterruptLock dari IQueueCallbackRead::OnRead.

Melakukannya menghindari kemungkinan kebuntuan, seperti yang dijelaskan dalam skenario berikut.

  1. Untuk menentukan apakah perangkatnya terganggu, UMDF mengirim I/O ke busnya dari dalam ISR-nya, dengan kunci interupsi ditahan.
  2. Pengemudi bus menyelesaikan permintaan kedua dalam utas yang sama di mana ia menerima permintaan di atas.
  3. Rutinitas penyelesaian permintaan kedua mengirimkan permintaan ke driver UMDF.
  4. Pengiriman I/O driver UMDF rutin memanggil IWDFInterrupt::AcquireInterruptLock, yang kemudian kebuntuan mencoba memperoleh kunci interupsi.
Driver tidak boleh mencoba memperoleh kunci secara rekursif. Jika tersambung ke debugger, kerangka kerja memperkenalkan titik henti dalam skenario ini.

Untuk informasi selengkapnya tentang penguncian interupsi manual, lihat Menyinkronkan Kode Interupsi.

Untuk informasi selengkapnya tentang penanganan gangguan pada driver UMDF, lihat Mengakses Perangkat Keras dan Menangani Gangguan.

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1.11
Header wudfddi.h
DLL WUDFx.dll

Lihat juga

IWDFInterrupt

IWDFInterrupt::ReleaseInterruptLock

WdfInterruptAcquireLock