Bagikan melalui


Pemecahan Masalah Driver UMDF 2.0 yang Mengalami Kerusakan

Mulai User-Mode Driver Framework (UMDF) versi 2, Anda dapat menggunakan subset perintah ekstensi debugger yang diterapkan dalam Wdfkd.dll untuk men-debug driver UMDF. Artikel ini menjelaskan perintah yang dapat Anda gunakan untuk memecahkan masalah driver UMDF.

Menentukan Mengapa Driver UMDF 2.0 Mengalami Crash

Jika proses host driver dihentikan, driver Anda mungkin memiliki masalah dalam panggilan balik yang menghasilkan batas waktu host terlampaui. Dalam hal ini, reflektor mengakhiri proses host driver.

Untuk menyelidikinya, pertama-tama siapkan sesi debugging mode kernel seperti yang dijelaskan dalam Cara Mengaktifkan Debugging Driver UMDF. Kami sangat menyarankan untuk melakukan semua pengembangan dan pengujian driver UMDF Anda dengan debugger kernel yang melekat pada sistem pengujian dan mengaktifkan Application Verifier (AppVerif.exe) pada WUDFHost.exe. Gunakan perintah berikut, lampirkan debugger kernel lalu boot ulang.

AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
  • Jika HostFailKdDebugBreak diatur, reflektor akan memasuki debugger mode kernel ketika ambang batas waktu terlampaui. Dalam output debugger, Anda akan melihat beberapa saran tentang cara memulai, termasuk tautan yang dapat Anda pilih. Contohnya:

    **** Problem detected in UMDF driver "WUDFOsrUsbFx2". !process 0xFFFFE0000495B080 0x1f, !devstack 0xFFFFE000032BFA10, Problem code 3 ****
    **** Dump UMDF driver image name and stack: !wdfkd.wdfumdevstack 0x000000BEBB49AE20
    **** Dump UM Irps for this stack: !wdfkd.wdfumirps 0x000000BEBB49AE20
    **** Dump UMDF trace log: !wmitrace.logdump WUDFTrace
    **** Helpful UMDF debugger extension commands: !wdfkd.wdfhelp
    **** Note that driver host process may get terminated if you go past this break, making it difficult to debug the problem!
    
  • Gunakan !analyze untuk menampilkan informasi tentang kegagalan, dan perintah ekstensi UMDF lainnya yang dapat Anda coba. Perintah ini dapat membantu kegagalan pemverifikasi UMDF atau pengecualian UMDF yang tidak tertangani. Anda dapat menggunakannya untuk penelusuran kesalahan kernel langsung atau men-debug file crash dump pengguna dari %ProgramData%\Microsoft\WDF.

  • Gunakan !process 0 0x1f wudfhost.exe untuk mencantumkan semua proses host driver Wudfhost.exe, termasuk informasi tumpukan utas.

    Anda juga dapat menggunakan !wdfkd.wdfumtriage dan !wdfkd.wdfldr untuk menampilkan semua driver yang saat ini terikat ke WDF. Saat Anda memilih nama gambar driver UMDF, debugger menampilkan alamat proses hosting. Anda kemudian dapat memilih alamat proses untuk menampilkan informasi khusus untuk proses tersebut.

  • Jika perlu, gunakan .process /r /p Process untuk mengalihkan konteks proses ke proses Wudfhost yang menghosting driver Anda. Gunakan .cache forcedecodeuser dan lmu untuk memverifikasi bahwa driver Anda dihosting dalam proses saat ini.

  • Periksa tumpukan panggilan utas (!thread Address) untuk menentukan apakah waktu panggilan balik driver habis. Lihat jumlah centang untuk utas. Di Windows 8.1, reflektor kehabisan waktu setelah satu menit.

  • Gunakan !wdfkd.wdfdriverinfo MyDriver.dll 0x10 untuk menampilkan pohon perangkat dalam bentuk verbose. Kemudian pilih !wdfdevice. Perintah ini menampilkan informasi status daya, kebijakan daya, dan Plug and Play (PnP) terperinci.

  • Gunakan !wdfkd.wdfumirps untuk mencari IRP yang tertunda.

  • Gunakan !wdfkd.wdfdevicequeues untuk memeriksa status antrean driver.

  • Dalam sesi debugging mode kernel, Anda dapat menggunakan !wmitrace.logdump WudfTrace untuk menampilkan log jejak.

Menampilkan Log IFR UMDF 2.0

Dalam sesi debugging mode kernel, Anda dapat menggunakan perintah ekstensi !wdfkd.wdflogdump untuk menampilkan catatan log Windows Driver Frameworks (WDF) In-flight Recorder (IFR), jika tersedia.

Menemukan File Cadangan Memori

Lihat Menentukan Mengapa Reflektor Menghentikan Proses Host untuk informasi cara menemukan file dump mode pengguna. Lihat Menggunakan Pelacakan Perangkat Lunak WPP di Driver UMDF untuk informasi tentang cara mengatur nilai registri LogMinidumpType untuk menentukan jenis informasi yang disimpan dalam file minidump.