Bagikan melalui


Mencegah Ketidakseimbangan Buat dan Tutup Pemberitahuan ke Driver

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.

Sampel UMDF 1 yang diarsipkan dapat ditemukan di Windows 11, versi 22H2 - Pembaruan Sampel Driver Mei 2022.

Untuk informasi selengkapnya, lihat Memulai UMDF.

Driver UMDF atas dapat menggunakan metode IWDFDeviceInitialize::AutoForwardCreateCleanupClose untuk mengontrol kapan kerangka kerja secara otomatis meneruskan pemberitahuan create-file, cleanup-file, dan close-file ke driver yang lebih rendah berikutnya di tumpukan perangkat. Namun, karena driver atas mengatur AutoForwardCreateCleanupClose untuk secara otomatis meneruskan hanya pada tingkat perangkat dan bukan pada tingkat per file, penerusan harus sama untuk semua file untuk perangkat. Kerangka kerja memastikan perilaku penerusan ini untuk pemberitahuan cleanup-file dan close-file. Jika driver atas mengimplementasikan fungsi panggilan balik IQueueCallbackCreate::OnCreateFile , itu harus memastikan bahwa perilaku penerusannya sama untuk semua permintaan create-file dan konsisten dengan perilaku penerusan untuk pemberitahuan cleanup-file dan close-file. Gagal melakukannya dapat menyebabkan driver yang lebih rendah menerima jumlah panggilan yang tidak sama ke metode IQueueCallbackCreate::OnCreateFile dan metode IFileCallbackCleanup::OnCleanupFile dan IFileCallbackClose::OnCloseFile .

Untuk mencegah driver yang lebih rendah menerima jumlah pemberitahuan create-file dan close-file yang tidak sama, driver atas harus memastikan, dalam fungsi panggilan balik IQueueCallbackCreate::OnCreateFile , bahwa:

  • Perilaku penerusannya sama untuk semua file untuk perangkat.

  • Perilaku penerusannya konsisten dengan cara mengatur parameter bendera IWDFDeviceInitialize::AutoForwardCreateCleanupClose. Yaitu:

    • Jika driver mengatur bendera ke WdfTrue, driver harus meneruskan semua permintaan create-file ke tumpukan perangkat.
    • Jika driver mengatur bendera ke WdfFalse, driver tidak boleh meneruskan permintaan create-file ke bawah tumpukan.
    • Jika driver mengatur bendera ke WdfUseDefault dan:
      • Jika driver adalah driver fungsi, driver tidak boleh meneruskan permintaan create-file apa pun ke tumpukan.
      • Jika driver adalah driver filter, itu harus meneruskan semua permintaan create-file ke bawah tumpukan.

Dalam situasi di mana driver tidak dapat meneruskan permintaan create-file, driver masih dapat menghasilkan permintaan create-file baru untuk driver yang lebih rendah dengan memanggil metode IWDFDevice::CreateWdfFile untuk membuat file WDF baru. Driver kemudian dapat menyelesaikan permintaan create-file asli berdasarkan hasil permintaan create-file yang baru dibuat (yaitu, dari hasil CreateWdfFile).