news 2026/10/28 1:41:10

nt!PiProcessNewDeviceNode函数中的PpQueryDeviceDescription和PpQueryDeviceLocationInformation

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nt!PiProcessNewDeviceNode函数中的PpQueryDeviceDescription和PpQueryDeviceLocationInformation

nt!PiProcessNewDeviceNode函数中的PpQueryDeviceDescription和PpQueryDeviceLocationInformation


#define PpQueryDeviceDescription(dn, desc) PpIrpQueryDeviceText((dn)->PhysicalDeviceObject, DeviceTextDescription, PsDefaultSystemLocaleId, desc)
#define PpQueryDeviceLocationInformation(dn, loc) PpIrpQueryDeviceText((dn)->PhysicalDeviceObject, DeviceTextLocationInformation, PsDefaultSystemLocaleId, loc)

NTSTATUS
PpIrpQueryDeviceText(
IN PDEVICE_OBJECT DeviceObject,
IN DEVICE_TEXT_TYPE DeviceTextType,
IN LCID POINTER_ALIGNMENT LocaleId,
OUT PWCHAR *DeviceText
)
{
IO_STACK_LOCATION irpSp;
NTSTATUS status;

PAGED_CODE();

ASSERT(DeviceTextType == DeviceTextDescription || DeviceTextType == DeviceTextLocationInformation);

*DeviceText = NULL;

RtlZeroMemory(&irpSp, sizeof(IO_STACK_LOCATION));

irpSp.MajorFunction = IRP_MJ_PNP;
irpSp.MinorFunction = IRP_MN_QUERY_DEVICE_TEXT;

irpSp.Parameters.QueryDeviceText.DeviceTextType = DeviceTextType;
irpSp.Parameters.QueryDeviceText.LocaleId = LocaleId;

status = IopSynchronousCall(DeviceObject, &irpSp, (PULONG_PTR)DeviceText);

ASSERT(NT_SUCCESS(status) || (*DeviceText == NULL));

if (NT_SUCCESS(status)) {

if(*DeviceText == NULL) {

status = STATUS_NOT_SUPPORTED;
}
} else {

*DeviceText = NULL;
}

return status;
}


NTSTATUS
PiProcessNewDeviceNode(
IN PDEVICE_NODE DeviceNode
)
{


PpQueryDeviceDescription(DeviceNode, &description);

0: kd> kc
#
00 nt!PpIrpQueryDeviceText
01 nt!PiProcessNewDeviceNode
02 nt!PipProcessDevNodeTree
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializeBootDrivers
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup


irpSp.MajorFunction = IRP_MJ_PNP;
irpSp.MinorFunction = IRP_MN_QUERY_DEVICE_TEXT;


0: kd> kc
#
00 ACPI!ACPIDispatchIrp
01 nt!IofCallDriver
02 nt!IopSynchronousCall
03 nt!PpIrpQueryDeviceText
04 nt!PiProcessNewDeviceNode
05 nt!PipProcessDevNodeTree
06 nt!PipDeviceActionWorker
07 nt!PipRequestDeviceAction
08 nt!IopInitializeBootDrivers
09 nt!IoInitSystem
0a nt!Phase1Initialization
0b nt!PspSystemThreadStartup
0c nt!KiThreadStartup
0: kd> dv
DeviceObject = 0x899050e8 Device for "\Driver\ACPI"
Irp = 0x89905220
0: kd> g
Breakpoint 5 hit
eax=00000002 ebx=8990520c ecx=899c0e74 edx=f745b068 esi=f73fe214 edi=00000000
eip=f740410c esp=f789a20c ebp=f789a238 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIDispatchIrp+0x19c:
f740410c ffd6 call esi {ACPI!ACPIBusIrpUnhandled (f73fe214)}
0: kd> t
eax=00000002 ebx=8990520c ecx=899c0e74 edx=f745b068 esi=f73fe214 edi=00000000
eip=f73fe214 esp=f789a208 ebp=f789a238 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIBusIrpUnhandled:
f73fe214 55 push ebp
0: kd> kc
#
00 ACPI!ACPIBusIrpUnhandled
01 ACPI!ACPIDispatchIrp
02 nt!IofCallDriver
03 nt!IopSynchronousCall
04 nt!PpIrpQueryDeviceText
05 nt!PiProcessNewDeviceNode
06 nt!PipProcessDevNodeTree
07 nt!PipDeviceActionWorker
08 nt!PipRequestDeviceAction
09 nt!IopInitializeBootDrivers
0a nt!IoInitSystem
0b nt!Phase1Initialization
0c nt!PspSystemThreadStartup
0d nt!KiThreadStartup

0: kd> gu
eax=c00000bb ebx=8990520c ecx=80ae0dfa edx=80b18958 esi=f73fe214 edi=00000000
eip=f740410e esp=f789a214 ebp=f789a238 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
ACPI!ACPIDispatchIrp+0x19e:
f740410e ff75fc push dword ptr [ebp-4] ss:0010:f789a234=899c0d58

eax=c00000bb

0: kd> gu
eax=c00000bb ebx=899050e8 ecx=899c0e74 edx=80b18958 esi=f789a2c8 edi=899052b4
eip=80c95e00 esp=f789a25c ebp=f789a284 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!IopSynchronousCall+0x1aa:
80c95e00 8bf0 mov esi,eax
0: kd> gu
eax=c00000bb ebx=00000000 ecx=00000000 edx=80b18958 esi=f789a370 edi=f789a2c8
eip=80c976c5 esp=f789a298 ebp=f789a2c8 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!PpIrpQueryDeviceText+0x8d:
80c976c5 8bd8 mov ebx,eax
0: kd> gu
eax=c00000bb ebx=00000000 ecx=00000000 edx=80b18958 esi=894ffea8 edi=899050e8
eip=80c93967 esp=f789a2e0 ebp=f789a38c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PiProcessNewDeviceNode+0xe5:
80c93967 8d45e0 lea eax,[ebp-20h]
0: kd> dv description
description = 0x00000000


PpQueryDeviceLocationInformation(DeviceNode, &location);

irpSp.MajorFunction = IRP_MJ_PNP;
irpSp.MinorFunction = IRP_MN_QUERY_DEVICE_TEXT;

0: kd> t
eax=f789a36c ebx=00000000 ecx=00000000 edx=80b18958 esi=894ffea8 edi=899050e8
eip=80c97638 esp=f789a2cc ebp=f789a38c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PpIrpQueryDeviceText:
80c97638 55 push ebp
0: kd> g
Breakpoint 74 hit
eax=0000001b ebx=00000000 ecx=89981f38 edx=89905220 esi=89905220 edi=899050e8
eip=f7403f70 esp=f789a23c ebp=f789a254 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!ACPIDispatchIrp:
f7403f70 55 push ebp
0: kd> g
Breakpoint 5 hit
eax=00000002 ebx=8990520c ecx=899c0e74 edx=f745b068 esi=f73fe214 edi=00000000
eip=f740410c esp=f789a20c ebp=f789a238 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIDispatchIrp+0x19c:
f740410c ffd6 call esi {ACPI!ACPIBusIrpUnhandled (f73fe214)}
0: kd> gu
eax=c00000bb ebx=00000000 ecx=899c0e74 edx=80b18958 esi=89905220 edi=899050e8
eip=80a2675c esp=f789a248 ebp=f789a254 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!IofCallDriver+0x62:
80a2675c 5f pop edi
0: kd> gu
eax=c00000bb ebx=899050e8 ecx=899c0e74 edx=80b18958 esi=f789a2c8 edi=899052b4
eip=80c95e00 esp=f789a25c ebp=f789a284 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!IopSynchronousCall+0x1aa:
80c95e00 8bf0 mov esi,eax
0: kd> gu
eax=c00000bb ebx=00000001 ecx=00000000 edx=80b18958 esi=f789a36c edi=f789a2c8
eip=80c976c5 esp=f789a298 ebp=f789a2c8 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!PpIrpQueryDeviceText+0x8d:
80c976c5 8bd8 mov ebx,eax
0: kd> gu
eax=c00000bb ebx=00000000 ecx=00000000 edx=80b18958 esi=894ffea8 edi=899050e8
eip=80c9397e esp=f789a2e0 ebp=f789a38c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PiProcessNewDeviceNode+0xfc:
80c9397e 8d45d4 lea eax,[ebp-2Ch]

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

Python入门:从“一脸懵”到“有点东西”,只需3小时

前言 “想学Python却不知从哪下手?看了教程只会打印Hello World?别急,这篇指南让你3小时后就能用Python做点‘真事儿’。” 一、别装软件!第一步先“玩”起来 新人最大误区:花3小时配环境,然后热情耗尽。…

作者头像 李华
网站建设 2026/10/27 9:58:01

基于spark的图书推荐系统基于大数据的图书推荐基于模型的协同过滤图书推荐系统矩阵分解 > ALS推荐(最小二乘法)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于spark的图书推荐系统基于大数据的图书推荐基于模型的协同过滤图书推荐系统矩阵分解 ALS推荐(最小二乘法)(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码数据源:BookCrossing(BX)数据集由Cai- Nicolas Ziegler 在 Humankin…

作者头像 李华
网站建设 2026/10/26 4:19:39

4.3 实验:LoRA/QLoRA微调模型实现业务风格定制

关于LoRA/QLoRA的介绍,详见: https://blog.csdn.net/qq_54708219/article/details/149268823https://blog.csdn.net/qq_54708219/article/details/149268823 本文将使用 TinyLlama 1.1B 模型进行 LoRA 微调,这是一个非常小的模型&#xff0…

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

6.5 服务安全策略配置:mTLS和授权策略完整实现

6.5 服务安全策略配置:mTLS和授权策略完整实现 引言 安全是微服务架构的重要考虑。通过Istio的mTLS和授权策略,可以实现服务间的安全通信和访问控制。本文将详细介绍如何在Bookinfo中配置安全策略。 一、mTLS配置 1.1 启用mTLS apiVersion: security.istio.io/v1beta1 k…

作者头像 李华