根据物理设备对象 (PDO) 标识符在 Windows 中查找设备

根据物理设备对象 (PDO) 标识符在 Windows 中查找设备

我最近买了一块新主板、处理器和 RAM。我为新组件重新安装了 Windows (x64 7 Ultimate) 和所有应用程序,但它使用的是旧系统中的相同 (零售) 操作系统许可证、显卡和光驱。

大约两周后,我第二次看到蓝屏 STOP 错误。第一次我让游戏继续运行,所以我把责任归咎于游戏,但这次我检查了事件日志,发现错误检查报告包含以下数据:

错误检查为:0x0000009f (0x00000000000000003, 0xfffffa800a21f060, 0xfffff80000b9c3d8, 0xfffffa8007a12540)。

然后我去了第一个到这个页面然后到这个页面来阐明其含义。

根据错误描述,可能是我的旧电源无法胜任新硬件的任务。但是,我的新 CPU 的额定功率比旧 CPU 低 15 瓦,所以我认为不是这个问题。

我还看到0xfffffa800a21f060错误检查的值是“物理设备对象”。过时的设备驱动程序似乎更有可能。我想根据这个数字追溯到设备名称,然后查找该设备的更新驱动程序。不幸的是,我不确定下一步该怎么做。

有什么想法可以做到这一点吗?听起来它可能指的是内存中调用堆栈上的一个位置;如果需要的话,我还有内存转储。


更新:
我从第一个蓝屏中找到了错误检查。它看起来像这样:

错误检查为:0x00000101 (0x0000000000000031, 0x0000000000000000, 0xfffff880009f1180, 0x0000000000000001)。

以及相关参考页面:
http://msdn.microsoft.com/en-us/library/ff557211(v=vs.85).aspx

这个没有提供太多信息。可能是 CPU 出现故障,但我还是想从后面的错误检查中追踪到设备。


更新 2:
根据答案中的说明,我得到了以下信息:

*******************************************************************************************
* *
* 错误检测分析 *
* *
*******************************************************************************************

驱动程序电源状态故障 (9f)
驱动程序导致电源状态不一致。
参数:
Arg1:00000000000000003,设备对象阻塞 Irp 时间过长
Arg2:fffffa800a21f060,堆栈的物理设备对象
Arg3:fffff80000b9c3d8,堆栈的功能设备对象
Arg4:fffffa8007a12540,被阻止的 IRP

调试细节:
------------------


DRVPOWERSTATE_SUBCODE: 3

图像名称: usbhub.sys

调试_FLR_IMAGE_时间戳:4ce7a68e

模块名称: usbhub

故障模块:fffff88005600000 usbhub

客户崩溃次数:1

默认存储桶 ID:VISTA_DRIVER_FAULT

BUGCHECK_STR: 0x9F

进程名称:系统

当前 IRQL: 2

堆栈文本:  
fffff800`00b9c388 fffff800`02d4b9c2 : 00000000`0000009f 00000000`00000003 fffffa80`0a21f060 fffff800`00b9c3d8 : nt!KeBugCheckEx
fffff800`00b9c390 fffff800`02cea652 : fffff800`00b9c4c0 fffff800`00b9c4c0 00000000`00000002 00000000`00000000 : nt! ?? ::FNODOBFM::`字符串'+0x34a90
fffff800`00b9c430 fffff800`02cea4f6 : fffffa80`08f0e0d0 fffffa80`08f0e0d0 00000000`00000000 00000000`00000000 : nt!KiProcessTimerDpcTable+0x66
fffff800`00b9c4a0 fffff800`02cea3de : 000001e1`889ca6f3 fffff800`00b9cb18 00000000`00ca4ace fffff800`02e55c48 : nt!KiProcessExpiredTimerList+0xc6
fffff800`00b9caf0 fffff800`02cea1c7 : 00000092`40cd33c3 00000092`00ca4ace 00000092`40cd33b2 00000000`000000ce : nt!KiTimerExpiration+0x1be
fffff800`00b9cb90 fffff800`02cd6a2a : fffff800`02e51e80 fffff800`02e5fcc0 00000000`00000002 fffff880`00000000 : nt!KiRetireDpcList+0x277
fffff800`00b9cc40 00000000`00000000 : fffff800`00b9d000 fffff800`00b97000 fffff800`00b9cc00 00000000`00000000 : nt!KiIdleLoop+0x5a


堆栈命令:kb

FOLLOWUP_NAME:机器所有者

FAILURE_BUCKET_ID: X64_0x9F_3_AiCharger_IMAGE_usbhub.sys

BUCKET_ID: X64_0x9F_3_AiCharger_IMAGE_usbhub.sys

后续:MachineOwner
---------

听起来罪魁祸首可能是系统中的 via pci usb 卡。在新主板上我真的不再需要它了(8 个 usb 端口,而不是 4 个)。我把它保留在新系统中,因为我看不出不这样做的理由,而且因为没有它,我找不到机箱的插槽盖。如果蓝屏继续,我可能会把它移除。

可能性似乎较小,但也可能是我的 USB 3.0 端口控制器的驱动程序不成熟。我会寻找这些端口的更新驱动程序,以防万一。

答案1

是的。您可以跟踪此错误检查。

1.您需要首先从这里下载 Windows 调试工具:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279

2.接下来,您需要适当的 Windows 7 调试符号(您需要“零售”版本。而不是“检查”版本: http://msdn.microsoft.com/en-us/windows/hardware/gg463028

3.正常安装调试工具。将调试符号安装到名为 的新文件夹中c:\Symbols。完成这两项操作后,打开 Windows 版调试工具,转到文件菜单并选择“符号文件路径”。用以下字符串替换框中的内容(如果您选择将符号安装到其他位置,则替换驱动器号和符号路径):

srv*c:\symbols*http://msdl.microsoft.com/download/symbols

4.接下来,使用 Windows 资源管理器转到 c:\Windows\Minidump(假设 C: 是您安装 Windows 的位置)。您将在其中找到所谓的 minidump 文件。这些文件包含有关您的 BSODS 的信息。每个 BSOD 都有一个文件,以 BSOD 的日期命名。

5.将最后一个文件拖到 Windows 调试工具的空白灰色区域(或通过文件菜单打开)。调试器将开始分析它,之后您将看到一个!analyze -v可以点击的链接。

6.单击它,您将获得错误检查报告。使用此 analize -v 的结果更新您的问题,我们中的许多人将能够提示您可能存在的问题。


下面给出了您可能想要粘贴到上述问题中的一个示例(来自今年年初我发现我的 RAM 有故障时的一个小型转储文件):

BugCheck 1000008E, {c0000005, 940c23de, abb34b0c, 0}

Probably caused by : Npfs.SYS ( Npfs!NpRemoveAllAttributesFromList+14 )

Followup: MachineOwner

[...]

KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e)
[...]
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: 940c23de, The address that the exception occurred at
Arg3: abb34b0c, Trap Frame
Arg4: 00000000

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

FAULTING_IP: 
Npfs!NpRemoveAllAttributesFromList+14
940c23de 897004          mov     dword ptr [eax+4],esi

答案2

当你在 Windbg 中加载 dmp 时加载符号,运行!podev 0xfffffa800a21f060(来自参数 2 的地址Arg2: fffffa800a21f060, Physical Device Object of the stack:)。

这将转储物理设备对象 (PDO)。

X64_0x9F_3_智能充电器图像_usbhub.sys

告诉我华硕 Ai 充电器司机造成了这种情况。

相关内容