Bagikan melalui


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.