Bagikan melalui


Mengakses Metadata UMDF di Laporan WER

Topik ini menjelaskan lokasi dan konten laporan Pelaporan Galat Windows (WER) yang dibuat sistem operasi saat User-Mode Driver Framework (UMDF) mengalami crash.

Sistem ini menghasilkan laporan WER untuk tiga jenis peristiwa UMDF yang berbeda: WUDFHostProblem, WUDFUnhandledException, dan WUDFVerifierFailure.

Ketika reflektor menghentikan proses host driver, kadang-kadang karena ambang batas waktu host terlampaui, sistem menghasilkan file yang disebut Report.wer, yang berisi informasi WER. Secara khusus, Report.wer berisi metadata UMDF yang mungkin berguna jika Anda mencoba men-debug driver UMDF tanpa akses ke target penelusuran kesalahan langsung.

Di Windows 8.1, Anda dapat menemukan file Report.wer di direktori C:\ProgramData\Microsoft\Windows\WER\ReportQueue. Di direktori ini, buka folder NonCritical_HostProblem_* terbaru dan temukan Report.wer.

Anda juga dapat mengakses laporan WER untuk UMDF menggunakan perintah PowerShell berikut:

get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt

Laporan sampel WUDFHostProblem

Berikut ini adalah contoh laporan UMDF WER jenis WUDFHostProblem. Ini diperoleh dari direktori ReportQueue yang dijelaskan di atas. Jika Anda menggunakan PowerShell untuk mengambil laporan, bidang dapat diberi label P0, P1, P2 alih-alih Sig[0], Sig[1], Sig[2]. Jika tidak, bidangnya sama dan berisi nilai yang mungkin sama. Sampel ini dihasilkan dari salah satu sampel WDK yang menggunakan papan referensi perangkat keras OSR USB-FX2.

Sig[0].Name=EventClass
Sig[0].Value=HostProblem
Sig[1].Name=Problem
Sig[1].Value=HostTimeout
Sig[2].Name=DetectedBy
Sig[2].Value=2
Sig[3].Name=UMDFVersion
Sig[3].Value=6.3.9600
Sig[4].Name=ExitCode
Sig[4].Value=103
Sig[5].Name=Operation
Sig[5].Value=3
Sig[6].Name=Message
Sig[6].Value=11b00
Sig[7].Name=Status
Sig[7].Value=ffffffff
Sig[8].Name=HardwareId
Sig[8].Value=USB\VID_0547&PID_1002&REV_0000

Bidang WUDFHostProblem

Tabel berikut ini menjelaskan kemungkinan nilai untuk bidang dalam laporan jenis WUDFHostProblem.

Indeks Nama Nilai
0 EventClass

Kerangka kerja menetapkan nilai ini ke HostProblem.

1 Masalah

Bidang ini berisi salah satu nilai berikut:

  • HostFailure
  • SendFailure
  • HostTimeout
  • BadRequest
  • Balasan Buruk
  • HostFailure
  • Lainnya
  • HostDisconnect
  • LeakedHandle
  • InvalidInterruptState
  • IsrTimedOut
2 DetectedBy

Berisi salah satu nilai enumerasi berikut:

cpp WdfComponentInvalid = 0, WdfComponentPlatform, WdfComponentReflector, WdfComponentDriverManager, WdfComponentHost, WdfComponentFramework, WdfComponentTest, WdfComponentMax
3 UMDFVersion

Menentukan versi pustaka UMDF yang saat ini sedang digunakan. Perhatikan bahwa ini mungkin versi yang lebih baru daripada yang disertakan dengan sistem operasi jika pengguna mengambil tindakan untuk memperbarui pustaka kerangka kerja.

4 ExitCode

Berisi salah satu nilai enumerasi berikut:

cpp WdfHostExit_StillActive = 0x103, WdfHostExit_CodeUnknown = 0x70000000, WdfHostExit_InternalDriverStopReported, WdfHostExit_InternalDriverStopReportFailed, WdfHostExit_ExternalTermination

WdfHostExit_StillActive menunjukkan bahwa proses host berjalan pada saat kerangka kerja membuat laporan kesalahan.

5 Operasi

Berisi salah satu nilai enumerasi berikut:

cpp WudfOperation_Invalid, WudfOperation_Init, WudfOperation_HostShutdown, WudfOperation_Pnp, WudfOperation_Cleanup, WudfOperation_Close, WudfOperation_Cancel, WudfOperation_IO, WudfOperation_Interrupt, WudfOperation_PoFx, WudfOperation_Other, WudfOperation_Max
6 Pesan

Digit pertama adalah bidang ini selalu 1, yang menunjukkan bahwa IRP terlibat dalam operasi. Pasangan digit berikutnya menunjukkan MajorFunction dan MinorFunction dari IRP, masing-masing.

Dalam laporan sampel di atas, misalnya, bidang ini berisi nilai 11b00. Ini berarti bahwa operasi adalah IRP yang ditangani reflektor atas nama proses host driver dengan nilai fungsi utama IRP_MJ_PNP dan nilai fungsi kecil IRP_MN_START_DEVICE (1 = pesan IRP, 1b = IRP_MJ_PNP, 00 = IRP_MN_START_DEVICE).

7 Status

Kerangka kerja selalu diatur ke nilai ini ke 0xffffffff.

8 HardwareId

Bidang ini berisi ID perangkat keras perangkat yang terkait dengan pengandar yang bermasalah.

Bidang WUDFUnhandledException

Tabel berikut ini menjelaskan nilai yang mungkin untuk bidang dalam laporan jenis WUDFUnhandledException.

Indeks Nama Nilai
0 EventClass

Kerangka kerja menetapkan nilai ini ke UnhandledException.

1 Komponen

Bidang ini berisi salah satu nilai berikut:

  • tidak valid
  • Platform
  • Reflektor
  • DriverManager
  • Host
  • Kerangka Kerja
  • Uji
2 ExceptionCode

Alasan pengecualian terjadi. Untuk daftar nilai, lihat EXCEPTION_RECORD.

3 RelativeFaultingAddress

Alamat tempat pengecualian terjadi.

4 CrashingModuleName Nama driver yang memunculkan pengecualian.
5 CrashingFileVersion Versi kerangka kerja driver.
6 LastDriverName Nama komponen driver non-UMDF pertama di tumpukan driver.
7 LastDriverVersion Nomor versi komponen driver non-UMDF pertama di tumpukan driver.
8 UMDFVersion

Menentukan versi pustaka UMDF yang saat ini sedang digunakan. Perhatikan bahwa ini mungkin versi yang lebih baru daripada yang disertakan dengan sistem operasi jika pengguna mengambil tindakan untuk memperbarui pustaka kerangka kerja.

9 HardwareId

Mulai dari Windows 8, ID perangkat keras disediakan dalam file terpisah. Dalam hal ini, kerangka kerja menetapkan nilai ini ke Dicadangkan Secara Terpisah.

Bidang WUDFVerifierFailure

Tabel berikut ini menjelaskan kemungkinan nilai untuk bidang dalam laporan jenis WUDFVerifierFailure.

Indeks Nama Nilai
0 EventClass

Kerangka kerja menetapkan nilai ini ke VerifierFailure.

1 FoundBy

Kerangka kerja menetapkan nilai ini ke Framework.

2 Kategori

Bidang ini berisi salah satu nilai berikut:

  • Internal
  • Driver
  • Pemanggil
  • Eksternal
  • UnhandledException
3 ErrorNumber Penggunaan internal saja.
4 Lokasi Penggunaan internal saja.
5 Driver Nama modul driver yang gagal.
6 CallerAddress Alamat rutinitas yang memulai pembuatan laporan.
7 UMDFVersion

Menentukan versi pustaka UMDF yang saat ini sedang digunakan. Perhatikan bahwa ini mungkin versi yang lebih baru daripada yang disertakan dengan sistem operasi jika pengguna mengambil tindakan untuk memperbarui pustaka kerangka kerja.

8 HardwareId

Mulai dari Windows 8, ID perangkat keras disediakan dalam file terpisah. Dalam hal ini, kerangka kerja menetapkan nilai ini ke Dicadangkan Secara Terpisah.