news 2026/5/19 2:37:35

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/5/5 4:15:09

文件格式转换完全手册:让数据流动无界限

文件格式转换完全手册:让数据流动无界限 【免费下载链接】VERT The next-generation file converter. Open source, fully local* and free forever. 项目地址: https://gitcode.com/gh_mirrors/ve/VERT 在数字化时代,我们每天都会遇到各种文件格…

作者头像 李华
网站建设 2026/5/14 21:03:13

接入LangChain可行?打造智能语音代理Agent

接入LangChain可行?打造智能语音代理Agent 在虚拟助手越来越“像人”的今天,一个关键问题正在被重新定义:我们是否还需要千篇一律的机械音?当用户期待的是有温度、有个性、会表达情绪的声音时,传统的TTS系统已经显得力…

作者头像 李华
网站建设 2026/5/13 2:17:06

Litecoin Core 0.10.2.2升级终极指南:从入门到精通

Litecoin Core 0.10.2.2升级终极指南:从入门到精通 【免费下载链接】litecoin Litecoin source tree 项目地址: https://gitcode.com/gh_mirrors/li/litecoin 作为Litecoin网络发展历程中的关键版本,0.10.2.2带来了诸多技术改进和性能优化。对于新…

作者头像 李华
网站建设 2026/5/16 20:36:12

从零开始:SIP.js完整指南构建WebRTC实时通信应用

想要在浏览器中快速实现语音通话和视频会议功能吗?SIP.js作为强大的JavaScript实时通信库,结合WebRTC技术,让这一切变得简单!本教程将手把手教你如何从零开始搭建企业级通信应用,无需深厚的网络协议知识。 【免费下载链…

作者头像 李华
网站建设 2026/5/13 1:29:41

Typecho博客搭建完整教程:从零开始创建个人网站

Typecho博客搭建完整教程:从零开始创建个人网站 【免费下载链接】typecho A PHP Blogging Platform. Simple and Powerful. 项目地址: https://gitcode.com/gh_mirrors/ty/typecho Typecho作为一款轻量级PHP博客平台,以其简洁高效的特点深受用户喜…

作者头像 李华
网站建设 2026/5/15 3:13:28

一键部署SamWaf网站防火墙:为你的网站穿上防护甲

一键部署SamWaf网站防火墙:为你的网站穿上防护甲 【免费下载链接】SamWaf SamWaf开源轻量级网站防火墙,完全私有化部署 SamWaf is a lightweight, open-source web application firewall for small companies, studios, and personal websites. It suppo…

作者头像 李华