news 2026/5/3 2:24:20

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/4/20 18:47:35

MeterSphere API接口调用终极指南:从零开始快速上手

MeterSphere API接口调用终极指南:从零开始快速上手 【免费下载链接】metersphere MeterSphere 一站式开源持续测试平台,为软件质量保驾护航。搞测试,就选 MeterSphere! 项目地址: https://gitcode.com/gh_mirrors/me/metersphe…

作者头像 李华
网站建设 2026/4/27 4:29:54

VictoriaMetrics智能异常检测:从告警风暴到精准运维的实战转型

VictoriaMetrics智能异常检测:从告警风暴到精准运维的实战转型 【免费下载链接】VictoriaMetrics VictoriaMetrics/VictoriaMetrics: 是一个开源的实时指标监控和存储系统,用于大规模数据实时分析和监控。它具有高吞吐量、低延迟、可扩展性等特点&#x…

作者头像 李华
网站建设 2026/4/28 10:04:27

LunarBar:macOS菜单栏农历工具的完整使用指南

LunarBar:macOS菜单栏农历工具的完整使用指南 【免费下载链接】LunarBar A compact lunar calendar for your macOS menu bar. 项目地址: https://gitcode.com/gh_mirrors/lu/LunarBar 对于日常使用Mac的用户来说,如何快速查看农历日期和传统节假…

作者头像 李华
网站建设 2026/4/22 10:23:23

鸿蒙开发实战:从零到一构建现代化应用的完整指南

鸿蒙开发实战:从零到一构建现代化应用的完整指南 【免费下载链接】HarmonyOS-Examples 本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计! 项目地址: https://gitcode.com/Cangjie/HarmonyOS…

作者头像 李华
网站建设 2026/5/1 1:36:56

是否支持中文英文混合输入?CosyVoice3完美处理跨语言文本

CosyVoice3 如何优雅处理中英文混合输入?技术解析与实战指南 在智能语音内容爆发的今天,用户早已不满足于“能说话”的合成语音。无论是短视频里的双语旁白、教育类App中的术语朗读,还是跨国企业客服系统的多语言播报,中英文混输…

作者头像 李华