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:
|
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:
|
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:
|
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. |