当前位置: 首页 > news >正文

ACPI!PnpBiosResourcesToNtResources函数分析转移到nt!IO_RESOURCE_REQUIREMENTS_LIST和LogConf下的BasicConfigVector

ACPI!PnpBiosResourcesToNtResources函数分析转移到nt!IO_RESOURCE_REQUIREMENTS_LIST和LogConf下BasicConfigVector的关系相等

while (TRUE) {

//
// Determine the size of the PNP resource descriptor
//
if ( !(tagName & LARGE_RESOURCE_TAG) ) {

//
// Small Tag
//
increment = (USHORT) (tagName & SMALL_TAG_SIZE_MASK) + 1;
tagName &= SMALL_TAG_MASK;


0: kd> p
eax=00000079 ebx=00000000 ecx=80ae0dfa edx=80b18958 esi=00000088 edi=e129e553
eip=f744c579 esp=f789a170 ebp=f789a1ac 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!PnpBiosResourcesToNtResources+0x97:
f744c579 a880 test al,80h
0: kd> p
eax=00000079 ebx=00000000 ecx=80ae0dfa edx=80b18958 esi=00000088 edi=e129e553
eip=f744c580 esp=f789a170 ebp=f789a1ac iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
ACPI!PnpBiosResourcesToNtResources+0x9e:
f744c580 2407 and al,7
0: kd> p
eax=00000002 ebx=00000000 ecx=80ae0dfa edx=80b18958 esi=00000088 edi=e129e553
eip=f744c587 esp=f789a170 ebp=f789a1ac 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!PnpBiosResourcesToNtResources+0xa5:
f744c587 80650bf8 and byte ptr [ebp+0Bh],0F8h ss:0010:f789a1b7=79
0: kd> p
eax=00000002 ebx=00000000 ecx=80ae0dfa edx=80b18958 esi=00000088 edi=e129e553
eip=f744c58b esp=f789a170 ebp=f789a1ac iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!PnpBiosResourcesToNtResources+0xa9:
f744c58b 0fb6750b movzx esi,byte ptr [ebp+0Bh] ss:0010:f789a1b7=78


//
// We are done if the current tag is the end tag
//
if (tagName == TAG_END) {

ACPIPrint( (
ACPI_PRINT_RESOURCES_2,
"PnpBiosResourcesToNtResources: TAG_END\n"
) );
break;
}

//
// How much many common resources are there?
//
if (Array[0] != NULL) {

size2 = Array[0]->Count; =0x11

} else {

size2 = 0;
}
0: kd> dv
Data = 0x7829e370 "--- memory read error at address 0x7829e370 ---"
Flags = 1
List = 0xf789a1e0
tagName = 0x78 'x'
ResourceCount = 0x13
buffer = 0x00000001 "--- memory read error at address 0x00000001 ---"
Array = 0xe1278800
0: kd> dx -r1 ((ACPI!_IO_RESOURCE_LIST * *)0xe1278800)
((ACPI!_IO_RESOURCE_LIST * *)0xe1278800) : 0xe1278800 [Type: _IO_RESOURCE_LIST * *]
0xe12a8008 [Type: _IO_RESOURCE_LIST *]
0: kd> dx -r1 ((ACPI!_IO_RESOURCE_LIST *)0xe12a8008)
((ACPI!_IO_RESOURCE_LIST *)0xe12a8008) : 0xe12a8008 [Type: _IO_RESOURCE_LIST *]
[<Raw View>] [Type: _IO_RESOURCE_LIST]
[0] : Bus Number Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[1] : Memory Resource: 0xa0000 - 0xbffff of length 0x20000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[2] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[3] : Memory Resource: 0xcc000 - 0xcffff of length 0x4000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[4] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[5] : Memory Resource: 0xd0000 - 0xd3fff of length 0x4000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[6] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[7] : Memory Resource: 0xd4000 - 0xd7fff of length 0x4000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[8] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[9] : Memory Resource: 0xd8000 - 0xdbfff of length 0x4000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[10] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[11] : Memory Resource: 0x80000000 - 0xfebfffff of length 0x7ec00000 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[12] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[13] : Port Resource: 0x0 - 0xcf7 of length 0xcf8 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[14] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[15] : Port Resource: 0xd00 - 0xfeff of length 0xf200 and alignment 0x1 [Type: _IO_RESOURCE_DESCRIPTOR]
[16] : Private Device Resource [Type: _IO_RESOURCE_DESCRIPTOR]
0: kd> dt ACPI!_IO_RESOURCE_LIST 0xe12a8008
+0x000 Version : 1
+0x002 Revision : 1
+0x004 Count : 0x11
+0x008 Descriptors : [1] _IO_RESOURCE_DESCRIPTOR

dv
ArrayIndex = 0
ArrayAlternateIndex = 0


//
// This is to account for the case where there are no dependent resources...
// // 这是为了处理没有依赖资源的情况。..
if (ArrayAlternateIndex == 0) {

if (Array[0] == NULL || Array[0]->Count == 0) {

ACPIPrint( (
ACPI_PRINT_WARNING,
"PnpBiosResourcesToNtResources: No Resources to Report\n"
) );

PnpiClearAllocatedMemory( Array, ArraySize );
*List = NULL;

return STATUS_UNSUCCESSFUL;
}

size += ( (Array[0])->Count - 1) * sizeof(IO_RESOURCE_DESCRIPTOR) +
sizeof(IO_RESOURCE_LIST);
}


//
// Allocate the required amount of space
//
(*List) = ExAllocatePoolWithTag( PagedPool, size, ACPI_RESOURCE_POOLTAG );
ACPIPrint( (
ACPI_PRINT_RESOURCES_2,
"PnpBiosResourceToNtResources: ResourceRequirementsList = %#08lx (%#08lx)\n",
(*List), size ) );


RtlZeroMemory( (*List), size );

//
// Find the first place to store the information
//
(*List)->InterfaceType = PNPBus;
(*List)->BusNumber = 0;
(*List)->ListSize = size;
buffer = (PUCHAR) &( (*List)->List[0]);


0: kd> dt IO_RESOURCE_REQUIREMENTS_LIST e129c898
nt!IO_RESOURCE_REQUIREMENTS_LIST
+0x000 ListSize : 0
+0x004 InterfaceType : 0 ( Internal )
+0x008 BusNumber : 0
+0x00c SlotNumber : 0
+0x010 Reserved : [3] 0
+0x01c AlternativeLists : 0
+0x020 List : [1] _IO_RESOURCE_LIST


0: kd> dt IO_RESOURCE_REQUIREMENTS_LIST e129c898
nt!IO_RESOURCE_REQUIREMENTS_LIST
+0x000 ListSize : 0x248
+0x004 InterfaceType : f ( PNPBus )
+0x008 BusNumber : 0
+0x00c SlotNumber : 0
+0x010 Reserved : [3] 0
+0x01c AlternativeLists : 0
+0x020 List : [1] _IO_RESOURCE_LIST
0: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_IO_RESOURCE_LIST (*)[1])0xe129c8b8))
(*((ntkrnlmp!_IO_RESOURCE_LIST (*)[1])0xe129c8b8)) [Type: _IO_RESOURCE_LIST [1]]
[0] [Type: _IO_RESOURCE_LIST]
0: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8))
(*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8)) [Type: _IO_RESOURCE_LIST]
[<Raw View>] [Type: _IO_RESOURCE_LIST]
0: kd> dx -id 0,0,899a2278 -r1 -nv (*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8))
(*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8)) [Type: _IO_RESOURCE_LIST]
[+0x000] Version : 0x0 [Type: unsigned short]
[+0x002] Revision : 0x0 [Type: unsigned short]
[+0x004] Count : 0x0 [Type: unsigned long]
[+0x008] Descriptors [Type: _IO_RESOURCE_DESCRIPTOR [1]]


//
// This check is required because we might just have a common list, with
// no dependent resources...
//
if (ArrayAlternateIndex == 0) {

ASSERT( size2 != 0 );

size = (size2 - 1) * sizeof(IO_RESOURCE_DESCRIPTOR) + sizeof(IO_RESOURCE_LIST);
RtlCopyMemory(buffer,Array[0],size);
(*List)->AlternativeLists += 1;
}


0: kd> dx -id 0,0,899a2278 -r1 -nv (*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8))
(*((ntkrnlmp!_IO_RESOURCE_LIST *)0xe129c8b8)) [Type: _IO_RESOURCE_LIST]
[+0x000] Version : 0x1 [Type: unsigned short]
[+0x002] Revision : 0x1 [Type: unsigned short]
[+0x004] Count : 0x11 [Type: unsigned long]
[+0x008] Descriptors [Type: _IO_RESOURCE_DESCRIPTOR [1]]
0: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR (*)[1])0xe129c8c0))
(*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR (*)[1])0xe129c8c0)) [Type: _IO_RESOURCE_DESCRIPTOR [1]]
[0] : Bus Number Resource [Type: _IO_RESOURCE_DESCRIPTOR]
0: kd> dx -id 0,0,899a2278 -r1 (*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR *)0xe129c8c0))
(*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR *)0xe129c8c0)) : Bus Number Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[<Raw View>] [Type: _IO_RESOURCE_DESCRIPTOR]
Type : 0x6 [Type: unsigned char]
Flags : 0x0
0: kd> dx -id 0,0,899a2278 -r1 -nv (*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR *)0xe129c8c0))
(*((ntkrnlmp!_IO_RESOURCE_DESCRIPTOR *)0xe129c8c0)) : Bus Number Resource [Type: _IO_RESOURCE_DESCRIPTOR]
[+0x000] Option : 0x0 [Type: unsigned char]
[+0x001] Type : 0x6 [Type: unsigned char]
[+0x002] ShareDisposition : 0x3 [Type: unsigned char]
[+0x003] Spare1 : 0x0 [Type: unsigned char]
[+0x004] Flags : 0x0 [Type: unsigned short]
[+0x006] Spare2 : 0x0 [Type: unsigned short]
[+0x008] u [Type: __unnamed]


0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0
+0x000 Option : 0 ''
+0x001 Type : 0x6 ''
+0x002 ShareDisposition : 0x3 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*1
+0x000 Option : 0 ''
+0x001 Type : 0x3 ''
+0x002 ShareDisposition : 0x3 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x20
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*2
+0x000 Option : 0 ''
+0x001 Type : 0x81 ''
+0x002 ShareDisposition : 0 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x6000
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*3
+0x000 Option : 0 ''
+0x001 Type : 0x3 ''
+0x002 ShareDisposition : 0x3 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x20
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*4
+0x000 Option : 0 ''
+0x001 Type : 0x81 ''
+0x002 ShareDisposition : 0 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x6000
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*5
+0x000 Option : 0 ''
+0x001 Type : 0x3 ''
+0x002 ShareDisposition : 0x3 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x20
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*6
+0x000 Option : 0 ''
+0x001 Type : 0x81 ''
+0x002 ShareDisposition : 0 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x6000
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*7
+0x000 Option : 0 ''
+0x001 Type : 0x3 ''
+0x002 ShareDisposition : 0x3 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x20
+0x006 Spare2 : 0
+0x008 u : __unnamed
0: kd> dt ntkrnlmp!_IO_RESOURCE_DESCRIPTOR 0xe129c8c0+20*8
+0x000 Option : 0 ''
+0x001 Type : 0x81 ''
+0x002 ShareDisposition : 0 ''
+0x003 Spare1 : 0 ''
+0x004 Flags : 0x6000
+0x006 Spare2 : 0
+0x008 u : __unnamed

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI\PNP0A03\2&daba3ff&2\LogConf]
"BasicConfigVector"=hex(a):08,03,00,00,0f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,01,00,01,00,17,00,00,00,00,06,\0x17=0n25个
03,00,00,00,00,00,80,00,00,00,00,00,00,00,7f,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,81,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00
,00,03,03,00,20,00,00,00,00,00,02,00,01,\
00,00,00,00,00,0a,00,00,00,00,00,ff,ff,0b,00,00,00,00,00,
00,81,00,00,00,60,\
00,00,03,00,00,00,00,00,0a,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,
00,81,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00
,00,03,03,00,20,00,00,00,00,40,00,00,01,00,00,00,00,\
00,0d,00,00,00,00,00,ff,3f,0d,00,00,00,00,00
,00,81,00,00,00,60,00,00,03,00,\
00,00,00,00,0d,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,81,00,\
00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,03,03,00,20,00,00,00,00,40,00,00,01,00,00,00,00,40,0d,00,00,\
00,00,00,ff,7f,0d,00,00,00,00,00,00,81,00,00,00,60,00,00,03,00,00,00,00,40,\
0d,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,81,00,00,01,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,03,03,00,20,00,00,00,00,40,00,00,01,00,00,00,00,80,0d,00,00,00,00,00,ff,\
bf,0d,00,00,00,00,00,00,81,00,00,00,60,00,00,03,00,00,00,00,80,0d,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,81,00,00,01,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,03,03,00,\
20,00,00,00,00,00,c0,3e,01,00,00,00,00,00,00,c0,00,00,00,00,ff,ff,bf,fe,00,\
00,00,00,00,81,00,00,00,60,00,00,03,00,00,00,00,00,00,c0,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,81,00,00,01,00,00,00,00,00,00,00,00,00,00,\ 25个
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,03,00,20,00,00,00,\
f8,0c,00,00,01,00,00,00,00,00,00,00,00,00,00,00,f7,0c,00,00,00,00,00,00,00,\
81,00,00,00,60,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,81,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,03,00,20,00,00,00,00,f2,00,00,\
01,00,00,00,00,0d,00,00,00,00,00,00,ff,fe,00,00,00,00,00,00,00,81,00,00,00,\
60,00,00,01,00,00,00,00,0d,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,81,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00

0: kd> ?0x0308
Evaluate expression: 776 = 00000308
0: kd> ?0x0308/19
Evaluate expression: 31 = 0000001f 共31行,正确。

http://www.jsqmd.com/news/357313/

相关文章:

  • 基于 Go-Micro、Gin、GORM、Wire 的博客管理系统微服务架构实现
  • 微软万万没想到!国产表格悄悄“超车”,看完我直接卸载Excel
  • oracle 19c创建CDB和非CDB模式
  • 模型加速十年演进
  • 菜鸟物流老司机教你玩转路径优化算法
  • Oracle 19c ADG报错ORA-19660: some files in the backup set could not be verified ORA-19661: datafile 0
  • 超参数调优十年演进
  • PostgreSQL 性能优化:慢查询优化全流程,从定位到优化的标准化 SOP
  • 分布式训练十年演进
  • 打卡信奥刷题(2813)用C++实现信奥题 P4160 [SCOI2009] 生日快乐
  • 重庆公寓酒店快装墙板多少钱一平,有推荐的厂家吗 - 工业设备
  • 嵌入式Linux内核编译入门
  • Studio 3T 2025.23 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
  • 流延机适合生产农业包装的品牌有哪些,费用大概多少钱? - myqiye
  • 分享我与学习小组制作的一个简单的进销存管理系统练习
  • [信息论与编码理论专题-40]:算术编码的优缺点与应用场景
  • python:简单本地调用deepseek-r1:1.5b 模型
  • 题解:CF1217D Coloring Edges
  • [信息论与编码理论专题-39]:算术编码不是给每个符号分配一个“码字”,而是把整个消息压缩成一个“小数”——这个小数越精确,信息量越大。
  • 2026苏州设计免费的全屋整装装修公司是哪些,价格如何 - 工业品网
  • Java如何编写文档注释,实现javadoc编程
  • 强得起飞!WPS Excel里写Python,但金山系表格才是真升级!
  • 鞍山律师事务所民事诉讼费用多少钱,靠谱的怎么选 - 工业品牌热点
  • ‌模糊测试增强:遗传算法驱动的API边界用例生成工具‌
  • 中国VCD曾有望称霸,却被国外联合消灭,国产软件不怕这事!
  • 测试预言机AI化的挑战与Diffusion模型机遇
  • 模型量化十年演进
  • 模型压缩十年演进
  • 一篇搞定全流程,AI论文软件 千笔ai写作 VS 笔捷Ai
  • 软件测试公众号内容热度解析:多模态技术驱动的专业洞察