Bagikan melalui


Mengambil Status dan Kode Masalah untuk Instans Perangkat

Di Windows Vista dan versi Windows yang lebih baru, model properti perangkat terpadu menyertakan properti status perangkat dan properti kode masalah. Model properti perangkat terpadu menggunakan kunci properti untuk mewakili properti ini.

Windows Server 2003, Windows XP, dan Windows 2000 tidak mendukung kunci properti model properti terpadu, juga tidak mendukung nilai entri registri yang sesuai yang mewakili properti ini. Namun, informasi yang sesuai dapat diambil dengan memanggil fungsi CM_Get_DevNode_Status . Untuk mempertahankan kompatibilitas dengan versi Windows yang lebih lama, Windows Vista dan versi yang lebih baru juga mendukung CM_Get_DevNode_Status. Namun, Anda harus menggunakan kunci properti model properti perangkat terpadu untuk mengakses properti perangkat.

Selain itu, dalam versi Windows Windows 8 dan yang lebih baru, ada juga properti status masalah. Properti ini berisi nilai NTSTATUS yang mungkin berisi informasi tambahan yang berkaitan dengan kode masalah yang diatur pada perangkat. Jika nilai status masalah STATUS_SUCCESS, maka tidak ada informasi tambahan yang berkaitan dengan kode masalah yang tersedia saat kode masalah diatur pada perangkat.

Untuk informasi tentang cara menggunakan kunci properti untuk mengakses properti driver perangkat di Windows Vista dan versi yang lebih baru, lihat Mengakses Properti Instans Perangkat (Windows Vista dan Yang Lebih Baru).

Untuk mengakses status dan kode masalah untuk instans perangkat di Windows Server 2003, Windows XP, dan Windows 2000, panggil CM_Get_DevNode_Status dan berikan parameter berikut:

  • Atur pulStatus ke penunjuk ke nilai berjenis ULONG yang menerima bendera bit status yang diatur untuk instans perangkat. Nilai status dapat berupa kombinasi bendera bit dengan awalan "DN_" yang didefinisikan dalam Cfg.h.

  • Atur pulProblemNumber ke penunjuk ke nilai berjenis ULONG yang menerima nomor masalah yang diatur untuk instans perangkat. Nomor masalah adalah salah satu konstanta dengan awalan "CM_PROB_" yang didefinisikan dalam Cfg.h. CM_Get_DevNode_Status mengatur nomor masalah hanya jika DN_HAS_PROBLEM diatur dalam pulStatus.

  • Atur dnDevInst ke handel instans perangkat ke perangkat untuk mengambil status dan kode masalah.

  • Atur ulFlags ke nol.

Jika panggilan ke CM_Get_DevNode_Status berhasil, CM_Get_DevNode_Status mengambil status yang diminta dan kode masalah untuk instans perangkat dan mengembalikan CR_SUCCESS. Jika panggilan fungsi gagal, CM_Get_DevNode_Status mengembalikan salah satu kode kesalahan dengan awalan "CR_" yang ditentukan dalam Cfgmgr32.h.

Menggunakan Manajer Perangkat untuk menemukan kode masalah dan status masalah untuk perangkat

Ketika ada masalah dengan perangkat, Manajer Perangkat akan melapisi ikon untuk perangkat dalam tampilan pohon dengan segitiga kuning dengan tanda seru di dalamnya. Dengan mengklik kanan perangkat dan memilih Properti, dialog akan muncul dengan informasi lebih lanjut tentang perangkat. Kode masalah muncul pada tab Umum , di bidang Status perangkat .

Properti Status masalah muncul di menu drop-down Properti pada tab Detail untuk perangkat di Manajer Perangkat.

Menggunakan debugger untuk menemukan kode masalah dan status masalah untuk perangkat

Untuk melihat semua perangkat yang memiliki kode masalah di debugger kernel, gunakan ekstensi !devnode 0 21 . Ini juga menunjukkan Kepada Anda ProblemStatus pada perangkat. Contohnya:

0: kd> !devnode 0 21
Dumping IopRootDeviceNode (= 0x85d37e30)
DevNode 0x8ad6ab78 for PDO 0x81635c30
  InstancePath is "ROOT\DIINSTALLDRIVER\0003"
  ServiceName is "isolated"
  State = DeviceNodeRemoved (0x312)
  Previous State = DeviceNodeInitialized (0x302)
  Problem = CM_PROB_FAILED_ADD
  Problem Status = 0xc00000bb

Anda juga dapat melihat kode masalah dan status masalah dengan mengeluarkan !devnode pada alamat DEVICE_NODE:

0: kd> !devnode 0x8ad6ab78 
DevNode 0x8ad6ab78 for PDO 0x81635c30
  Parent 0x85d37e30   Sibling 0x8adee670   Child 0000000000   
  ...
  Problem = CM_PROB_FAILED_ADD
  Problem Status = 0xc00000bb

Lihat juga