news 2026/6/23 14:39:42

nt!PiProcessReenumeration函数中的PiMarkDeviceTreeForReenumeration

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nt!PiProcessReenumeration函数中的PiMarkDeviceTreeForReenumeration

nt!PiProcessReenumeration函数中的PiMarkDeviceTreeForReenumeration

1: kd> kc
#
00 nt!PiProcessReenumeration
01 nt!PipDeviceActionWorker
02 nt!PipRequestDeviceAction
03 nt!IopInitializePlugPlayServices
04 nt!IoInitSystem
05 nt!Phase1Initialization
06 nt!PspSystemThreadStartup
07 nt!KiThreadStartup
1: kd> dv
Request = 0x89dc7b78
addContext = struct _ADD_CONTEXT
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_PI_DEVICE_REQUEST *)0x89dc7b78)
((ntkrnlmp!_PI_DEVICE_REQUEST *)0x89dc7b78) : 0x89dc7b78 [Type: _PI_DEVICE_REQUEST *]
[+0x000] ListEntry [Type: _LIST_ENTRY]
[+0x008] DeviceObject : 0x89db9c00 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
[+0x00c] RequestType : ReenumerateRootDevices (8) [Type: _DEVICE_REQUEST_TYPE]
[+0x010] ReorderingBarrier : 0x0 [Type: unsigned char]
[+0x014] RequestArgument : 0x0 [Type: unsigned long]
[+0x018] CompletionEvent : 0x0 [Type: _KEVENT *]
[+0x01c] CompletionStatus : 0x0 [Type: long *]


NTSTATUS
PiProcessReenumeration(
IN PPI_DEVICE_REQUEST Request
)
{

enumType = (Request->RequestType == ReenumerateDeviceOnly)? EnumTypeShallow : EnumTypeDeep;
PiMarkDeviceTreeForReenumeration(
deviceNode,
enumType != EnumTypeShallow ? TRUE : FALSE);

addContext.DriverStartType = SERVICE_DEMAND_START;

PipProcessDevNodeTree(
deviceNode,
PnPBootDriversInitialized, // LoadDriver
FALSE, // ReallocateResources
enumType,
TRUE, // Synchronous
FALSE,
&addContext,
Request);

return STATUS_SUCCESS;
}


1: kd> p
eax=00000308 ebx=00000002 ecx=00000000 edx=00000000 esi=89dc7b78 edi=89db9ac0
eip=80c954b9 esp=f789a5b0 ebp=f789a5c0 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
nt!PiProcessReenumeration+0x81:
80c954b9 83fb01 cmp ebx,1
1: kd> p
PiMarkDeviceTreeForReenumerationWorker: Reenumerating HTREE\ROOT\0
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\ACPI_HAL\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_AFD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_BEEP\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_CRCDISK\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_DMBOOT\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_DMLOAD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_FIPS\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_GPC\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_IPSEC\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_KSECDD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_MNMDD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_MOUNTMGR\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NDIS\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NDISTAPI\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NDISUIO\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NDPROXY\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NETBT\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_NULL\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_PARTMGR\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_RASACD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_RDPCDD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_RDPWD\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_TCPIP\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_TDTCP\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_VGASAVE\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_VOLSNAP\0000
PiMarkDeviceTreeForReenumerationWorker: Reenumerating Root\LEGACY_WANARP\0000
eax=00000000 ebx=00000002 ecx=00000000 edx=00000000 esi=89dc7b78 edi=89db9ac0
eip=80c954c6 esp=f789a5b0 ebp=f789a5c0 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
nt!PiProcessReenumeration+0x8e:
80c954c6 56 push esi

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 17:47:20

如何选择最优种子?人工试听对比选出最佳结果

如何选择最优种子?人工试听对比选出最佳结果 在语音合成系统日益普及的今天,我们已经不再满足于“能说话”的机器声音——用户期待的是自然、富有情感、甚至带有个人特色的语音输出。尤其是在虚拟主播、有声书生成、智能客服等高交互场景中,哪…

作者头像 李华
网站建设 2026/6/20 13:44:41

2025终极音乐下载方案:Python神器Musicdl实现12平台无损抓取完整指南

你是否曾因版权限制无法下载心仪的歌曲?是否厌倦了在不同音乐平台间来回切换?今天我要为你介绍一款真正能解决音乐下载痛点的神器——Musicdl,它用纯Python代码实现了12个主流音乐平台的无损音乐抓取,让你轻松拥有个人音乐库。 【…

作者头像 李华
网站建设 2026/6/19 7:06:54

为什么要买我们的GPU算力?专为大模型优化,稳定高效

为什么要买我们的GPU算力?专为大模型优化,稳定高效 在今天这个AI应用爆发的时代,越来越多开发者开始尝试部署像 CosyVoice3 这样的开源语音克隆模型——只需3秒音频,就能复刻一个人的声音,还能用自然语言控制情感和方…

作者头像 李华
网站建设 2026/6/20 19:51:41

零基础掌握高速PCB回流路径仿真技巧

零基础也能搞懂:高速PCB回流路径仿真实战全解析你有没有遇到过这样的情况?电路原理图完全正确,元器件焊接也没问题,但系统一上电,信号眼图闭合、误码频发,EMC测试直接亮红灯。排查半天,最后发现…

作者头像 李华
网站建设 2026/6/20 10:23:36

从零到一:手把手教你用Kubesphere搞定Pig-Mesh微服务部署

从零到一:手把手教你用Kubesphere搞定Pig-Mesh微服务部署 【免费下载链接】pig ↥ ↥ ↥ 点击关注更新,基于 Spring Cloud 2025、Spring Boot 4.0、 OAuth2 的 RBAC 权限管理系统 项目地址: https://gitcode.com/pig-mesh/pig 还在为Spring Cloud…

作者头像 李华
网站建设 2026/6/19 7:06:54

Kimi K2大模型本地安装实战:新手也能轻松上手的完整攻略

Kimi K2大模型本地安装实战:新手也能轻松上手的完整攻略 【免费下载链接】Kimi-K2-Instruct-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Kimi-K2-Instruct-GGUF 还在为千亿参数大模型的高昂成本发愁吗?今天我要告诉你一个好消息…

作者头像 李华