0xE6 Pemeriksaan Bug: DRIVER_VERIFIER_DMA_VIOLATION
Pemeriksaan bug DRIVER_VERIFIER_DMA_VIOLATION memiliki nilai 0x000000E6. Ini adalah kode pemeriksaan bug untuk semua pelanggaran Verifikasi DMA Driver Verifier.
Penting
Artikel ini untuk programmer. Jika Anda adalah pelanggan yang telah menerima kode kesalahan layar biru saat menggunakan komputer Anda, lihat Memecahkan masalah kesalahan layar biru.
Catatan
Kode bugcheck utama E6 dapat diamati ketika Driver Verifier tidak diaktifkan. Silakan lihat halaman Verifikasi DMA untuk informasi lebih lanjut jika Anda mengalami kode ini tanpa Mengaktifkan Driver Verifier.
Parameter DRIVER_VERIFIER_DMA_VIOLATION
Parameter 1 adalah satu-satunya parameter yang menarik. Parameter ini mengidentifikasi pelanggaran yang tepat. Jika debugger dilampirkan, pesan informatif ditampilkan di debugger.
Parameter 1 | Penyebab Kesalahan dan Pesan Debugger |
---|---|
0x00 - Kesalahan DMA lain-lain. |
Kode ini dapat mewakili dua jenis kesalahan seperti yang ditunjukkan oleh parameter 2: 0x1 - Driver mencoba untuk menyiram terlalu banyak byte ke akhir file register peta. Parameter 3 - Jumlah byte yang tersisa di MDL. Parameter 4 - Jumlah byte yang dibiarkan diminta untuk dibersihkan. 0x2 - Windows telah kehabisan register peta yang bersebelahan. Parameter 3 - Daftar peta diperlukan. Parameter 4 - Jumlah register peta yang bersebelahan. |
0x01 |
Penghitung kinerja telah menurun. Nilai lama dan baru penghitung ditampilkan. |
0x02 |
Penghitung kinerja telah meningkat terlalu cepat. Nilai penghitung ditampilkan di debugger. |
0x03 |
Driver membebaskan terlalu banyak buffer umum DMA. Biasanya ini berarti membebaskan buffer yang sama dua kali. Parameter 2 - Jumlah buffer umum tambahan yang dikosongkan. |
0x04 |
Driver membebaskan terlalu banyak saluran adaptor DMA. Biasanya ini berarti membebaskan saluran adaptor yang sama dua kali. Parameter 2 - Jumlah saluran adaptor tambahan yang dikosongkan. |
0x05 |
Driver membebaskan terlalu banyak register peta DMA. Biasanya ini berarti membebaskan register peta yang sama dua kali. Parameter 2 - Jumlah register peta tambahan yang dikosongkan. |
0x06 |
Driver membebaskan terlalu banyak daftar sebar/kumpulkan DMA. Biasanya ini berarti membebaskan daftar sebar/kumpulkan yang sama dua kali. Parameter 2 - Daftar pengumpulan sebar yang dialokasikan. Parameter 3 - Daftar pengumpulan sebar yang dikosongkan. |
0x07 |
Driver mencoba melepaskan adaptor tanpa terlebih dahulu membebaskan semua buffer umumnya. Parameter 2 - Penunjuk ke adaptor DMA. Parameter 3 - Jumlah buffer umum yang luar biasa. Parameter 4 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x08 |
Driver mencoba melepaskan adaptor tanpa terlebih dahulu membebaskan semua saluran adaptor, buffer umum, atau daftar sebar/kumpulkan.
Parameter 2 - Penunjuk ke adaptor DMA. Parameter 3 - Jumlah saluran adaptor yang luar biasa. Parameter 4 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x09 |
Driver mencoba melepaskan adaptor tanpa terlebih dahulu membebaskan semua register peta. Parameter 2 - Penunjuk ke adaptor DMA. Parameter 3 - Jumlah register peta yang luar biasa. Parameter 4 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x0A |
Driver mencoba melepaskan adaptor tanpa terlebih dahulu membebaskan semua daftar sebar/kumpulkannya. Parameter 2 - Penunjuk ke adaptor DMA. Parameter 3 - Jumlah daftar pengumpulan sebar yang luar biasa. Parameter 4 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x0B |
Driver telah mengalokasikan terlalu banyak saluran adaptor secara bersamaan (Hanya satu saluran adaptor yang diizinkan per adaptor.) Parameter 2 - Saluran adaptor yang luar biasa. |
0x0C |
Driver mencoba mengalokasikan terlalu banyak register peta secara bersamaan. Parameter 2 - Register peta yang diperlukan. Parameter 3 - Register peta maksimum. |
0x0D |
Driver tidak memerah buffer adapternya. Parameter 2 - Jumlah byte yang dipetakan. Parameter 3 - Jumlah maksimum byte yang dapat dipetakan pada satu waktu. |
0x0E |
Driver mencoba transfer DMA tanpa mengunci buffer. Buffer yang dimaksud ada di memori halaman. Parameter 2 - Alamat MDL buffer DMA. |
0x0F |
Driver atau perangkat keras menulis di luar buffer DMA yang dialokasikan. Parameter 2 adalah kode Pelanggaran. 0x01 : Tag sebelum buffer DMA telah dimodifikasi. Tag yang diharapkan adalah DmaVrfy0. Parameter 3 - Panjang buffer. Parameter 4 - Buffer mulai. 0x02 : Tag setelah buffer DMA dimodifikasi. Tag yang diharapkan adalah DmaVrfy0.Parameter 3 - Panjang buffer. Parameter 4 - Buffer mulai. 0x03 : Register peta gratis ditimpa.Parameter 3 - Alamat korupsi. Pola pengisian yang diharapkan 0x0F. 0x04 : Padding sebelum buffer salah dimodifikasi.Parameter 3 - Buffer mulai. Padding yang diharapkan 0x0F. Parameter 4 - Alamat korupsi. 0x05 : Padding setelah buffer salah dimodifikasi.Parameter 3 - Buffer mulai. Parameter 4 - Alamat korupsi. Pola padding yang diharapkan 0x0F. |
0x10 |
Driver mencoba membebaskan register petanya ketika beberapa masih dipetakan. Parameter 2 - Jumlah register yang masih dipetakan. |
0x11 |
Driver memiliki terlalu banyak jumlah referensi yang luar biasa untuk adaptor. Parameter 2 - Jumlah referensi. Parameter 3 - Penunjuk ke adaptor DMA. Parameter 4 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x13 |
Driver memanggil rutinitas DMA di IRQL yang tidak tepat. Parameter 2 adalah kode Pelanggaran. 0x01 : IRQL saat ini berbeda dari yang diharapkan.Parameter 3 - IRQL yang diharapkan. Parameter 4 - IRQL saat ini. 0x02 : IRQL saat ini lebih tinggi dari yang diharapkan.Parameter 3 - IRQL maksimum yang diharapkan. Parameter 4 - IRQL saat ini. |
0x14 |
Driver memanggil rutinitas DMA di IRQL yang tidak tepat. |
0x15 |
Driver mencoba mengalokasikan terlalu banyak register peta. Parameter 2 - Register peta yang dialokasikan. Parameter 3 - Register peta maksimum. |
0x16 |
Driver mencoba membersihkan buffer yang tidak dipetakan. Parameter 2 - Alamat di ruang virtual sistem register peta. Parameter 3 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x18 |
Driver mencoba operasi DMA dengan menggunakan adaptor yang sudah dirilis dan tidak ada lagi. Parameter 2 - Penunjuk ke adaptor DMA. Parameter 3 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x19 |
Driver melewati nilai DMA_ADAPTER null ke rutinitas HAL. |
0x1B |
Pengemudi meneruskan alamat dan MDL ke rutinitas HAL. Namun, alamat ini tidak berada dalam batas MDL ini. Parameter 2 - Alamat virtual yang berada di luar batas MDL. Parameter 3 - MDL. |
0x1D |
Driver mencoba memetakan rentang alamat yang sudah dipetakan. Parameter 2 - Buffer untuk memetakan dimulai. Parameter 3 - Buffer untuk memetakan akhir. Parameter 4 - Alamat sistem dalam buffer yang sudah dipetakan. |
0x1E |
Driver bernama HalGetAdapter. Fungsi ini usang -- Anda harus menggunakan IoGetDmaAdapter sebagai gantinya. |
0x1F |
Buffer DMA tidak valid. Driver mereferensikan alamat sistem yang tidak valid -- baik sebelum MDL pertama, atau setelah akhir MDL pertama, atau dengan menggunakan panjang transfer yang lebih panjang dari buffer MDL dan melewati batas halaman dalam MDL.Parameter 2 adalah kode Pelanggaran. 0x01 : Alamat buffer virtual sebelum MDL pertama. Parameter 3 - Alamat virtual awal buffer DMA. Parameter 4 - Penunjuk ke MDL pertama yang menjelaskan buffer DMA. 0x02 : Alamat virtual adalah setelah MDL pertama. Parameter 3 - Alamat virtual awal buffer DMA. Parameter 4 - Penunjuk ke MDL pertama yang menjelaskan buffer DMA. 0x03 : Panjang transfer ekstra melewati batas halaman. Parameter 3 - Pointer ke MDL yang menjelaskan buffer DMA. Parameter 4 - Panjang transfer DMA. 0x04 : Alamat virtual buffer DMA tidak diratakan cache. Parameter 3 - Alamat virtual awal buffer DMA. Parameter 4 - Pointer ke MDL yang menjelaskan buffer DMA. 0x05 : Panjang buffer DMA tidak diratakan cache. Parameter 3 - Panjang buffer DMA. Parameter 4 - Pointer ke MDL yang menjelaskan buffer DMA. |
0x20 |
Driver mencoba untuk menghapus register peta yang belum dipetakan. Parameter 2 - Petakan basis register. Parameter 3 - VA awal buffer DMA. Parameter 4 - Penunjuk ke MDL yang digunakan untuk menjelaskan buffer DMA. |
0x21 |
Driver mencoba memetakan buffer panjang nol untuk transfer. Parameter 2 - Penunjuk ke data pemverifikasi internal yang sesuai. |
0x22 |
Buffer DMA tidak dipetakan dalam VA sistem. Parameter 2 - MDL |
0x23 |
Tidak dapat menghapus saluran yang belum selesai atau dibatalkan. Parameter 2 - Kode pelanggaran. Nilai: 0x00 : Flush saluran ilegal Parameter 3 - Id Pengontrol. Parameter 4 - Nomor Saluran. |
0x24 |
Buffer tidak cukup untuk panjang yang diminta. Parameter 2 - Panjang tidak tertaut. |
0x25 |
Versi deskripsi perangkat tidak dikenal. |
0x26 |
IOMMU mendeteksi pelanggaran DMA. Parameter 2 - Objek Perangkat perangkat yang rusak. Parameter 3 - Informasi yang salah (biasanya kesalahan alamat fisik). Parameter 4 - Jenis kesalahan (khusus perangkat keras). |
Penyebab
Lihat deskripsi setiap kode di bagian Parameter untuk deskripsi penyebabnya.
Resolusi
Pemeriksaan bug ini hanya dapat terjadi ketika Driver Verifier telah diinstruksikan untuk memantau satu atau beberapa driver. Jika Anda tidak berniat menggunakan Pemverifikasi Driver, Anda harus menonaktifkannya. Anda mungkin juga mempertimbangkan untuk menghapus driver yang menyebabkan masalah ini.
Jika Anda adalah penulis driver, gunakan informasi yang diperoleh melalui pemeriksaan bug ini untuk memperbaiki bug dalam kode Anda.
Untuk informasi selengkapnya tentang Pemverifikasi Driver, lihat Pemverifikasi Driver.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk