Bagikan melalui


Pelacakan Pool

Pelacakan Kumpulan memantau alokasi memori yang dibuat oleh driver. Pada saat driver dibongkar, Driver Verifier memastikan bahwa semua alokasi yang dibuat oleh driver telah dibebaskan.

Alokasi memori yang tidak dihasilkan (juga disebut kebocoran memori) adalah penyebab umum performa sistem operasi yang diturunkan. Ini dapat memfragmentasi kumpulan sistem dan akhirnya menyebabkan crash sistem.

Ketika opsi ini aktif, Driver Verifier akan melakukan pemeriksaan bug 0xC4 (dengan Parameter 1 sama dengan 0x62) jika driver dilepas tanpa membebaskan semua alokasinya.

Jika Driver Verifier mengeluarkan pengecekan bug ini dengan Parameter 1 sama dengan 0x51, 0x52, 0x53, 0x54, atau 0x59, driver telah menulis ke memori di luar batas alokasi yang ditentukan. Dalam hal ini, Anda harus mengaktifkan fitur Kumpulan Khusus untuk menemukan sumber kesalahan.

Lihat Pemeriksaan Kesalahan 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) untuk melihat daftar parameter pemeriksaan kesalahan.

Dimulai dengan Windows Vista, mengaktifkan opsi Pelacakan Kumpulan juga memungkinkan pelacakan halaman terkunci. Ketika opsi ini aktif, Driver Verifier akan mengeluarkan Pemeriksaan Bug 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) jika driver tidak berhasil melepaskan halaman terkunci setelah operasi I/O.

Di Windows 7 dan versi yang lebih baru dari sistem operasi Windows, opsi Pelacakan Kumpulan mendukung memori yang dialokasikan dengan menggunakan API kernel berikut:

Di Windows 7 dan versi yang lebih baru dari sistem operasi Windows, ketika Pelacakan Pool diaktifkan, Driver Verifier dapat mendeteksi upaya untuk mengalokasikan memori pool kernel dengan kuota dalam konteks proses Idle. Upaya seperti itu biasanya berarti bahwa driver mengalokasikan memori dari rutinitas DPC. Alur atau konteks proses untuk rutinitas DPC tidak dapat diandalkan, jadi mencoba menagih kuota ke proses tersebut salah.

Pemantauan Pelacakan Kumpulan

Statistik alokasi kumpulan memori dapat dipantau secara terpisah untuk setiap driver yang sedang diverifikasi. Statistik ini dapat ditampilkan oleh Driver Verifier Manager, baris perintah Verifier.exe, atau dalam file log. Lihat Memantau Penghitung Individu untuk detailnya.

Ekstensi debugger kernel !verifier 0x3 dapat digunakan untuk menemukan alokasi memori yang belum selesai setelah driver dilepas, atau untuk melacak alokasi saat driver berjalan. Ekstensi ini juga menunjukkan tag kumpulan, ukuran kumpulan, dan alamat alokator untuk setiap alokasi. Untuk informasi tentang ekstensi debugger, lihat Penelusuran Kesalahan Windows.

Biaya Kuota Pool dari Rutinitas DPC

Driver kernel dapat memanggil ExAllocatePoolWithQuotaTag untuk mengalokasikan memori kumpulan kernel dan menagih jumlah byte yang dialokasikan untuk kuota kumpulan proses saat ini. Driver biasanya menggunakan kuota untuk alokasi memori yang terkait langsung dengan permintaan yang berasal dari aplikasi.

Rutinitas panggilan prosedur yang ditangguhkan (DPC) dapat berjalan dalam konteks proses apa pun. Oleh karena itu, pengisian kuota dari rutinitas DPC membebankan proses acak. Lebih buruk lagi, ketika rutinitas DPC berjalan dalam konteks proses Menganggur, kondisi ini dapat mengakibatkan kerusakan memori atau crash sistem.

Mulai Windows 7, Driver Verifier mendeteksi panggilan ExAllocatePoolWithQuotaTag dari rutinitas DPC.

Mengaktifkan Opsi Ini

Anda dapat mengaktifkan fitur Pelacakan Kumpulan untuk satu atau beberapa driver dengan menggunakan Driver Verifier Manager atau baris perintah Verifier.exe. Untuk detailnya, lihat Memilih Opsi Pemverifikasi Driver.

  • Pada baris perintah

    Pada baris perintah, opsi Pelacakan Kumpulan diwakili oleh Bit 3 (0x8). Untuk mengaktifkan Pelacakan Kumpulan, gunakan nilai penanda 0x8 atau tambahkan 0x8 ke nilai penanda. Contohnya:

    verifier /flags 0x8 /driver MyDriver.sys
    

    Fitur ini akan aktif setelah boot berikutnya.

    Pada Windows Vista dan versi Windows yang lebih baru, Anda juga dapat mengaktifkan dan menonaktifkan Pelacakan Kumpulan tanpa me-reboot komputer dengan menambahkan parameter /volatile ke perintah . Contohnya:

    verifier /volatile /flags 0x8 /adddriver MyDriver.sys
    

    Pengaturan ini segera efektif, tetapi hilang ketika Anda mematikan atau me-reboot komputer. Untuk detailnya, lihat Menggunakan Pengaturan Volatil.

    Fitur Pelacakan Pool juga disertakan dalam pengaturan standar. Contohnya:

    verifier /standard /driver MyDriver.sys
    
  • Menggunakan Pengelola Verifikasi Pengemudi

    1. Mulai Manajer Verifikasi Driver. Ketik Pemverifikasi di jendela Command Prompt.
    2. Pilih Buat pengaturan kustom (untuk pengembang kode) lalu klik Berikutnya.
    3. Pilih Pilih pengaturan individual dari daftar lengkap.
    4. Pilih (centang) Pelacakan kumpulan.

    Fitur Pelacakan Kolam juga termasuk dalam pengaturan standar. Untuk menggunakan fitur ini, di Driver Verifier Manager, klik Buat Pengaturan Standar.