Bagikan melalui


Menentukan Apakah Driver Membocorkan Objek Kerangka Kerja

Topik ini menjelaskan bagaimana Anda dapat menemukan kebocoran memori driver yang disebabkan oleh referensi yang belum dilepaskan. Ini berlaku untuk driver User-Mode Driver Framework (UMDF) versi 1 dan 2.

UMDF 1

Di UMDF versi 1, tumpukan panggilan dapat menyebabkan kebocoran memori jika setiap panggilan ke AddRef tidak memiliki panggilan Rilis yang cocok.

Untuk menguji apakah driver UMDF versi 1 Anda membocorkan objek kerangka kerja, gunakan langkah-langkah berikut:

  1. Gunakan aplikasi kontrol WDF Verifier untuk mengatur opsi pemverifikasi yang Anda inginkan. Selama pengujian reguler, mulailah dengan mengatur TrackObjects dan bukan TrackRefCounts.

    Ketika driver dilepaskan, verifikator kode kerangka masuk ke debugger jika ada objek kerangka yang belum dihapus, dan meminta Anda untuk menggunakan ekstensi debugger !wudfdumpobjects. Ekstensi debugger ini menampilkan daftar objek yang tidak dihapus.

  2. Jika pemverifikasi kode menunjukkan bahwa driver membocorkan objek kerangka kerja, gunakan aplikasi kontrol untuk mengatur opsi TrackRefCounts.

    Jika opsi ini diatur, pemverifikasi melacak referensi ke objek kerangka kerja saat driver berjalan. Anda dapat menggunakan ekstensi debugger !wudfrefhist untuk menampilkan setiap tumpukan panggilan (set panggilan fungsi) yang bertambah atau mengurangi jumlah referensi objek. Dengan memeriksa panggilan AddRef dan Release dalam tumpukan panggilan ini, Anda harus dapat menemukan tumpukan yang tidak mengurangi jumlah referensi objek dan dengan demikian menyebabkan kebocoran.

Untuk informasi tentang opsi pemverifikasi tambahan, lihat Menggunakan Pemverifikasi UMDF.

Untuk informasi tentang kapan harus menghapus objek kerangka kerja, lihat Mengelola Masa Pakai Objek.

UMDF 2

Di UMDF versi 2, referensi yang tidak dilepaskan jarang terjadi, tetapi dapat terjadi karena ketidakcocokan panggilan saat menggunakan WdfObjectReference dan WdfObjectDereference.

Untuk menguji apakah driver UMDF versi 2 Anda membocorkan objek kerangka kerja, gunakan prosedur berikut:

  1. Ikuti langkah-langkah yang diuraikan dalam Praktik Terbaik untuk mengonfigurasi komputer Anda untuk debugging UMDF.

  2. Untuk menggunakan pelacakan tag, aktifkan Verifikator UMDF dan aktifkan pelacakan di registri. Kedua pengaturan ini disimpan dalam subkunci Parameters\Wdf dari kunci driver HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<>.

    Untuk mengaktifkan Pemverifikasi UMDF, atur nilai bukan nol untuk VerifierOn.

    Untuk mengaktifkan pelacakan handle, atur nilai TrackHandles ke nama satu atau beberapa jenis-jenis objek, atau tentukan tanda bintang (*) untuk melacak semua jenis-jenis objek.

    Anda juga dapat mengubah pengaturan Pemverifikasi UMDF dengan menggunakan aplikasi WdfVerifier.exe.

  3. Mulai ulang, buat koneksi debugger, lalu gunakan perintah debugger berikut:

Jika Pemverifikasi UMDF aktif, kebocoran memori terdeteksi saat pembongkaran driver, sama seperti di KMDF.

Untuk informasi tambahan tentang menggunakan jumlah referensi di driver KMDF dan UMDF versi 2, lihat Framework Object Life Cycle.