Bagikan melalui


0x10D Pemeriksaan Bug: WDF_VIOLATION

Pemeriksaan bug WDF_VIOLATION memiliki nilai 0x0000010D. Ini menunjukkan bahwa Kernel-Mode Driver Framework (KMDF) mendeteksi bahwa Windows menemukan kesalahan dalam driver berbasis kerangka kerja.

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.

Parameter WDF_VIOLATION

Parameter 1 menunjukkan kode kesalahan tertentu dari pemeriksaan bug. Parameter 4 dicadangkan.

Parameter 1 Parameter 2 Parameter 3 Penyebab Kesalahan

0x1

Penunjuk ke struktur WDF_POWER_ROUTINE_TIMED_OUT_DATA

Dicadangkan

Driver berbasis kerangka kerja telah kehabisan waktu selama operasi daya. Ini biasanya berarti bahwa tumpukan perangkat tidak mengatur bit DO_POWER_PAGABLE dan driver mencoba operasi yang dapat dipaginasi setelah tumpukan perangkat halaman dimatikan.

0x2

Telah dipesan

Telah dipesan

Upaya sedang dilakukan untuk memperoleh kunci yang saat ini sedang ditahan.

0x3

Handel WDFREQUEST

Jumlah referensi luar biasa yang tetap ada di kedua buffer

Windows Driver Framework Verifier mengalami kesalahan fatal. Secara khusus, permintaan I/O selesai, tetapi objek permintaan kerangka kerja tidak dapat dihapus karena ada referensi luar biasa ke buffer input, buffer output, atau keduanya.

0x4

Dicadangkan

Alamat penelepon

Parameter NULL diteruskan ke fungsi yang memerlukan nilai non-NULL .

0x5

Nilai handel yang diteruskan

Dicadangkan

Handel objek kerangka kerja dari jenis yang salah diteruskan ke metode objek kerangka kerja.

0x6

Lihat tabel di bawah ini.

0x7

Handel objek kerangka kerja

Dicadangkan

Driver mencoba menghapus objek kerangka kerja dengan salah dengan memanggil WdfObjectDereference untuk menghapus handel alih-alih memanggil WdfObjectDelete.

0x8

Handel objek transaksi DMA

Dicadangkan

Operasi terjadi pada objek transaksi DMA saat tidak dalam status yang benar.

0x9

Saat ini tidak digunakan.

0xA

Penunjuk ke struktur WDF_QUEUE_FATAL_ERROR_DATA

Dicadangkan

Kesalahan fatal telah terjadi saat memproses permintaan yang saat ini dalam antrean.

0xB

Lihat tabel di bawah ini.

0xC

Handel WDFDEVICE

Penunjuk ke PnP IRP baru

IRP PnP baru yang berubah status tiba saat driver sedang memproses IRP PnP lain yang mengubah status.

0xD

Handel WDFDEVICE

Pointer ke power IRP

Pemilik kebijakan daya perangkat menerima IRP daya yang tidak dimintanya. Mungkin ada beberapa pemilik kebijakan daya, tetapi hanya satu yang diizinkan. Driver KMDF dapat mengubah kepemilikan kebijakan daya dengan memanggil WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL tempat fungsi panggilan balik peristiwa dipanggil.

IRQL tempat fungsi panggilan balik peristiwa dikembalikan.

Fungsi panggilan balik peristiwa tidak kembali pada IRQL yang sama di mana ia dipanggil. Fungsi panggilan balik mengubah IRQL secara langsung atau tidak langsung (misalnya, dengan memperoleh spinlock, yang meningkatkan IRQL menjadi DISPATCH_LEVEL, tetapi tidak melepaskan spinlock).

0xF

Alamat fungsi panggilan balik peristiwa.

Dicadangkan

Fungsi panggilan balik peristiwa memasuki wilayah penting, tetapi tidak meninggalkan wilayah penting sebelum kembali.

Parameter 1 sama dengan 0x6

Jika Parameter 1 sama dengan 0x6, maka kesalahan fatal dibuat dalam menangani permintaan WDF. Dalam hal ini, Parameter 2 lebih lanjut menentukan jenis kesalahan fatal yang telah dibuat, seperti yang didefinisikan oleh enumerasi WDF_REQUEST_FATAL_ERROR.

Parameter 2 Parameter 3 Penyebab Kesalahan

0x1

Alamat IRP

Tidak ada lagi lokasi tumpukan I/O yang tersedia untuk memformat IRP yang mendasar.

0x2

Nilai handel permintaan WDF

Upaya dilakukan untuk memformat objek permintaan kerangka kerja yang tidak berisi IRP.

0x3

Nilai handel permintaan WDF

Driver mencoba mengirim permintaan kerangka kerja yang telah dikirim ke target I/O.

0x4

Penunjuk ke struktur WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA yang berisi penunjuk ke IRP, nilai handel permintaan WDF, fungsi utama IRP, dan jumlah byte yang dicoba ditulis

Driver telah menyelesaikan permintaan kerangka kerja, tetapi telah menulis lebih banyak byte ke buffer output daripada yang ditentukan dalam IRP.

Parameter 1 sama dengan 0xB

Jika Parameter 1 sama dengan 0xB, maka upaya untuk memperoleh atau melepaskan kunci tidak valid. Dalam hal ini, Parameter 3 lebih lanjut menentukan kesalahan yang telah dibuat.

Parameter 2 Parameter 3 Penyebab Kesalahan

Nilai handel

0x0

Handel yang diteruskan ke WdfObjectAcquireLock atau WdfObjectReleaseLock mewakili objek yang tidak mendukung kunci sinkronisasi.

Handel kunci putar WDF

0x1

Kunci putaran dilepaskan oleh utas yang tidak memperolehnya.

Penyebab

Lihat deskripsi setiap kode di bagian Parameter untuk penjelasan tentang penyebabnya.

Resolusi

Ekstensi !analyze debug menampilkan informasi tentang pemeriksaan bug dan dapat membantu dalam mengumpulkan informasi, seperti modul kode yang salah.

Biasanya, file cadangan WDF akan menghasilkan informasi lebih lanjut tentang driver yang menyebabkan pemeriksaan bug ini. Gunakan perintah ini untuk melihat file log.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Jika Parameter 1 sama dengan 0x2, periksa tumpukan pemanggil untuk menentukan kunci yang dimaksud.

Jika Parameter 1 sama dengan 0x3, log kesalahan driver Kernel-Mode Driver Framework akan menyertakan detail tentang referensi yang luar biasa.

Jika Parameter 1 sama dengan 0x4, gunakan perintah ln debugger dengan nilai Parameter 3 sebagai argumennya untuk menentukan fungsi mana yang memerlukan parameter non-NULL.

Jika Parameter 1 sama dengan 0x7, gunakan perintah ekstensi Parameter 2!wdfkd.wdfhandle untuk menentukan jenis handel.

Jika Parameter 1 sama dengan 0xA, struktur WDF_QUEUE_FATAL_ERROR_DATA akan menunjukkan permintaan yang bermasalah atau handel antrean. Ini juga akan menunjukkan NTSTATUS, jika tidak STATUS_SUCCESS, jika tersedia.