news 2026/6/9 18:33:37

得到节点Device (P2P0)的子节点Device (S1F0)的PCI地址

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
得到节点Device (P2P0)的子节点Device (S1F0)的PCI地址

得到节点Device (P2P0)的子节点Device (S1F0)的PCI地址

第0部分:

dsdt.dsl:6096: Device (P2P0)
dsdt.dsl:6306: Device (S1F0)


Device (S1F0)
{
Name (_ADR, Zero) // _ADR: Address
Name (_SUN, 0x20) // _SUN: Slot User Number
OperationRegion (REGS, PCI_Config, 0x00, 0x04)
Field (REGS, DWordAcc, NoLock, Preserve)
{
ID, 32
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (BSTA (ID))
}

Device (S2F0)
{
Name (_ADR, 0x00010000) // _ADR: Address
Name (_SUN, 0x21) // _SUN: Slot User Number

第一部分:

NTSTATUS
EXPORT
PciConfigSpaceHandlerWorker(
IN PNSOBJ AcpiObject,
IN NTSTATUS CompletionStatus,
IN POBJDATA Result,
IN PVOID Context
)
{

if (!interface) {

if (!(state->Flags & PCISUPP_GOT_SLOT_INFO)) {

state->Flags |= PCISUPP_GOT_SLOT_INFO;

status = GetPciAddress(state->PciObj,
PciConfigSpaceHandlerWorker,
(PVOID)state,
&state->Bus,
&state->Slot);

1: kd> kc
#
00 ACPI!GetPciAddress
01 ACPI!PciConfigSpaceHandlerWorker

02 ACPI!GetOpRegionScopeWorker
03 ACPI!IsPciDeviceWorker
04 ACPI!IsPciDeviceWorker
05 ACPI!IsPciDeviceWorker
06 ACPI!ACPIGetWorkerForString
07 ACPI!AsyncCallBack
08 ACPI!RunContext
09 ACPI!DispatchCtxtQueue
0a ACPI!StartTimeSlicePassive
0b ACPI!ACPIWorker
0c nt!PspSystemThreadStartup
0d nt!KiThreadStartup
1: kd> dv
PciObj = 0x8996d45c
CompletionRoutine = 0xf740d62c
Context = 0x898a8a10
Bus = 0x898a8a48 ""
Slot = 0x898a8a44
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d45c)
((ACPI!_NSObj *)0x8996d45c) : 0x8996d45c [Type: _NSObj *]
[+0x000] list [Type: _List]
[+0x008] pnsParent : 0x8996cd78 [Type: _NSObj *]
[+0x00c] pnsFirstChild : 0x8996d4d4 [Type: _NSObj *]
[+0x010] dwNameSeg : 0x30463153 [Type: unsigned long]
[+0x014] hOwner : 0x899af330 [Type: void *]
[+0x018] pnsOwnedNext : 0x8996d298 [Type: _NSObj *]
[+0x01c] ObjData [Type: _ObjData]
[+0x030] Context : 0x89968c88 [Type: void *]
[+0x034] dwRefCount : 0x0 [Type: unsigned long]
1: kd> db 0x8996cd78
8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........
8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......
8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cda8 a0 8e 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996cdb8 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996cdc8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cdd8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......


1: kd> kc
#
00 ACPI!GetPciAddressWorker
01 ACPI!GetPciAddress
02 ACPI!PciConfigSpaceHandlerWorker
03 ACPI!GetOpRegionScopeWorker
04 ACPI!IsPciDeviceWorker
05 ACPI!IsPciDeviceWorker
06 ACPI!IsPciDeviceWorker
07 ACPI!ACPIGetWorkerForString
08 ACPI!AsyncCallBack
09 ACPI!RunContext
0a ACPI!DispatchCtxtQueue
0b ACPI!StartTimeSlicePassive
0c ACPI!ACPIWorker
0d nt!PspSystemThreadStartup
0e nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x8996d45c
Status = 0n0
Result = 0x00000000
Context = 0x899c1460
buffer = unsigned char [64] ""
1: kd> dt GET_ADDRESS_CONTEXT 0x899c1460
ACPI!GET_ADDRESS_CONTEXT
+0x000 PciObject : 0x8996d45c _NSObj
+0x004 Bus : 0x898a8a48 ""
+0x008 Slot : 0x898a8a44 _PCI_SLOT_NUMBER
+0x00c ParentBus : 0 ''
+0x010 ParentSlot : _PCI_SLOT_NUMBER
+0x014 Flags : 0
+0x018 Address : 0
+0x01c BaseBusNumber : 0
+0x020 RunCompletion : 0n-1
+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x028 CompletionContext : 0x898a8a10 Void

//
// First, determine the slot number.
//
if (!(state->Flags & PCISUPP_CHECKED_ADR)) {

//
// Get the _ADR.
//
state->Flags |= PCISUPP_CHECKED_ADR;
status = ACPIGetNSAddressAsync(
state->PciObject,
GetPciAddressWorker,
(PVOID)state,
&(state->Address),
NULL
);


1: kd> kc
#
00 ACPI!ACPIGet
01 ACPI!GetPciAddressWorker
02 ACPI!GetPciAddress
03 ACPI!PciConfigSpaceHandlerWorker
04 ACPI!GetOpRegionScopeWorker
05 ACPI!IsPciDeviceWorker
06 ACPI!IsPciDeviceWorker
07 ACPI!IsPciDeviceWorker
08 ACPI!ACPIGetWorkerForString
09 ACPI!AsyncCallBack
0a ACPI!RunContext
0b ACPI!DispatchCtxtQueue
0c ACPI!StartTimeSlicePassive
0d ACPI!ACPIWorker
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup
1: kd> dv
Target = 0x8996d45c
ObjectID = 0x5244415f
Flags = 0x48040402
SimpleArgument = 0x00000000
SimpleArgumentSize = 0

1: kd> db 0x8996d45c
8996d45c 98 d2 96 89 60 d8 96 89-78 cd 96 89 d4 d4 96 89 ....`...x.......
8996d46c 53 31 46 30 30 f3 9a 89-98 d2 96 89 00 00 06 00 S1F00...........

1: kd> db 0x8996d45c
8996d45c 98 d2 96 89 60 d8 96 89-78 cd 96 89 d4 d4 96 89 ....`...x.......
8996d46c 53 31 46 30 30 f3 9a 89-98 d2 96 89 00 00 06 00 S1F00...........
8996d47c 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d48c 88 8c 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996d49c 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996d4ac 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d4bc 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996d4cc 44 00 00 00 00 90 96 89-1c d8 96 89 18 d5 96 89 D...............
1: kd> dt nsobj 0x8996d45c
ACPI!NSOBJ
+0x000 list : _List
+0x008 pnsParent : 0x8996cd78 _NSObj
+0x00c pnsFirstChild : 0x8996d4d4 _NSObj
+0x010 dwNameSeg : 0x30463153
+0x014 hOwner : 0x899af330 Void
+0x018 pnsOwnedNext : 0x8996d298 _NSObj
+0x01c ObjData : _ObjData
+0x030 Context : 0x89968c88 Void
+0x034 dwRefCount : 0
1: kd> db 0x8996cd78
8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........
8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......
8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

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

SpringBean实例化的基本流程

SpringBean实例化的基本流程 一、原理 Spring 容器在进行初始化时&#xff0c;会将 xml 配置的<bean>的信息封装成一个 BeanDefinition 对象&#xff0c;所有的BeanDefinition 存储到一个名为beanDefinitionMap的 Map 集合中去&#xff0c;Spring 框架在对该 Map 进行遍历…

作者头像 李华
网站建设 2026/5/31 10:35:02

珲春推荐一下烤肉哪家正宗

珲春正宗烤肉之延炭乳酸菌烤肉推荐在珲春这座充满美食魅力的城市&#xff0c;烤肉可谓是当地饮食文化的一张亮丽名片。众多食客在寻觅正宗烤肉的过程中&#xff0c;常常会有诸多疑问。今天&#xff0c;就为大家推荐一家在珲春相当正宗且独具特色的烤肉店——延炭乳酸菌烤肉。主…

作者头像 李华
网站建设 2026/6/10 2:22:39

网络威胁情报:构建你自己的情报源——DIY情报系统如何阻止零日攻击

网络威胁情报&#xff1a;构建你自己的情报源 DIY情报系统如何阻止零日攻击 警报在凌晨2点17分响起&#xff1a;未知恶意软件正在窃取薪资数据。我们每年花费50万美元的商业威胁源毫无反应。但我自制的智能系统却立即发出了警报——因为三天前&#xff0c;我已在我们的行业论坛…

作者头像 李华
网站建设 2026/5/31 3:22:50

自媒体配图GIF大小 怎么弄?高效动图裁剪工具实操教程

自媒体剪短视频配动图、校园社团做招新宣传图、职场做汇报 PPT 动图时&#xff0c;总碰到视频转 GIF 素材提取麻烦、动图裁剪尺寸不合规、GIF 压缩后画面糊成一团&#xff0c;最后没法上传或展示的问题&#xff0c;白白耽误不少时间。这里分享适配新场景的 GIF 规格&#xff1a…

作者头像 李华
网站建设 2026/5/29 18:47:45

16APSK/32APSK调制解调MATLAB仿真实现

一、仿真系统架构 %% 参数设置 N 10000; % 符号数 M16 [4,12]; % 16APSK环结构 M32 [4,12,16]; % 32APSK环结构 radii16 [1,2]; % 16APSK半径 radii32 [0.6,1.2,1.8]; % 32APSK半径 snr_range 0:2:20; % SNR范围二、核心仿真代码 1. 16APSK调制解调…

作者头像 李华
网站建设 2026/6/10 1:05:09

[python]-循环语句

while循环while循环语句只要条件满足会无限循环执行while的条件需得到布尔类型&#xff0c;True表示继续循环&#xff0c;False表示结束循环需要设置循环终止的条件&#xff0c;如 i 1 配合 i < 100&#xff0c;就能确保100次后停止&#xff0c;否则将无限循环空格缩进和 if…

作者头像 李华