Fungsi WdfDeviceInitSetRemoveLockOptions (wdfdevice.h)

[Hanya berlaku untuk KMDF]

Metode WdfDeviceInitSetRemoveLockOptions menyebabkan kerangka kerja memperoleh kunci hapus sebelum mengirimkan IRP jenis apa pun ke driver.

Sintaks

void WdfDeviceInitSetRemoveLockOptions(
  [in] PWDFDEVICE_INIT          DeviceInit,
  [in] PWDF_REMOVE_LOCK_OPTIONS Options
);

Parameter

[in] DeviceInit

Penunjuk yang disediakan penelepon ke struktur WDFDEVICE_INIT .

[in] Options

Penunjuk ke struktur WDF_REMOVE_LOCK_OPTIONS .

Nilai kembali

Tidak ada

Keterangan

Secara default, kerangka kerja memperoleh kunci hapus sebelum memberikan RUNPS dari jenis utama berikut ke driver:

IRP_MJ_PNP
IRP_MJ_POWER
IRP_MJ_SYSTEM_CONTROL

Ketika IRP selesai, kerangka kerja melepaskan kunci hapus.

Mulai dari KMDF 1.11, driver dapat secara opsional memanggil WdfDeviceInitSetRemoveLockOptions menyebabkan kerangka kerja memperoleh kunci penghapusan sebelum mengirimkan semua jenis IRP, bukan hanya yang tercantum di atas.

Jika driver Anda memiliki klien mode kernel yang mengirim I/O yang tidak disinkronkan dengan status PnP perangkat Anda, Anda mungkin mengalami crash karena runtime integrasi I/O yang tiba setelah objek perangkat kerangka kerja dihapus. Dalam hal ini, Anda dapat memanggil WdfDeviceInitSetRemoveLockOptions. Kemudian, ketika klien mengirim permintaan I/O ke perangkat Anda:

  • Jika perangkat belum dihapus, kunci hapus berhasil diperoleh dan permintaan dikirimkan. Jika penghapusan terjadi nanti, kerangka kerja memanggil IoReleaseRemoveLockAndWait yang memblokir hingga semua akuisisi kunci yang berhasil dirilis (permintaan I/O selesai).
  • Jika perangkat telah diproses IRP_MN_REMOVE_DEVICE, tetapi ada referensi yang luar biasa ke objek perangkat WDM yang mencegah perangkat dilepaskan, kunci penghapusan tidak diperoleh dan kerangka kerja segera menyelesaikan permintaan.
CatatanWdfDeviceInitSetRemoveLockOptions tidak didukung pada objek kontrol.
 
Biasanya, driver memanggil WdfDeviceInitSetRemoveLockOptions dari dalam fungsi panggilan balik EvtDriverDeviceAdd , tepat sebelum memanggil WdfDeviceCreate.

Setelah driver memanggil WdfDeviceInitSetRemoveLockOptions, pengaturan tetap berlaku selama masa pakai objek perangkat kerangka kerja.

Untuk informasi selengkapnya tentang menghapus kunci, lihat Menggunakan Hapus Kunci.

Contoh

Contoh kode ini menginisialisasi struktur WDF_REMOVE_LOCK_OPTIONS dan memanggil WdfDeviceInitSetRemoveLockOptions.


WDF_REMOVE_LOCK_OPTIONS RemoveLockOptions;

WDF_REMOVE_LOCK_OPTIONS_INIT(
                             &RemoveLockOptions,
                             WDF_REMOVE_LOCK_OPTION_ACQUIRE_FOR_IO
                             );
WdfDeviceInitSetRemoveLockOptions(
                                  DeviceInit,
                                  &RemoveLockOptions
                                  );

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1.11
Header wdfdevice.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf)

Lihat juga

WDF_REMOVE_LOCK_OPTIONS

WDF_REMOVE_LOCK_OPTIONS_FLAGS

WDF_REMOVE_LOCK_OPTIONS_INIT