news 2026/5/1 10:03:48

得到节点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/4/18 2:15:15

基于深度学习的神经细胞检测系统

目录 神经细胞检测系统概述关键技术方法应用场景性能优化方向典型代码片段(PyTorch示例) 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 神经细胞检测系统概述 基于深度学习的神经细胞检测系统利用卷积神经网络…

作者头像 李华
网站建设 2026/5/1 7:35:01

MATLAB小波交叉功率谱分析源代码实现

一、核心代码框架 基于MATLAB小波工具箱(Wavelet Toolbox),实现两个时间序列的小波交叉功率谱分析,包含数据预处理、参数设置、交叉谱计算及可视化。 %% 1. 数据加载与预处理 % 加载两个时间序列数据(示例&#xff1…

作者头像 李华
网站建设 2026/4/16 12:38:55

基于MATLAB的延迟求和(DAS)波束形成算法实现

一、算法原理 延迟求和(Delay and Sum, DAS)是波束形成的基础算法,通过调整各阵元信号的时间延迟,使目标方向信号相位对齐后叠加增强,抑制其他方向噪声。其核心公式为:其中: xm(t)x_m(t)xm​(t)…

作者头像 李华
网站建设 2026/4/29 17:30:30

学长亲荐8个一键生成论文工具,研究生轻松搞定论文写作!

学长亲荐8个一键生成论文工具,研究生轻松搞定论文写作! 论文写作的“加速器”:AI 工具如何改变研究生的学习节奏 在当今学术研究日益复杂的背景下,研究生们面对的不仅是繁重的课程任务,还有论文写作带来的巨大压力。…

作者头像 李华
网站建设 2026/5/1 7:32:42

职场晋升简历怎么制作?专属模板下载+HR认可技巧

求职场景不同,简历难题却同样棘手?职场晋升想更新简历,却不会突出管理能力和项目成果;想做兼职,不知道如何平衡主业与兼职经历、突出适配技能;理科应届生不会量化实验成果,文科应届生难以体现文…

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

日常证件照怎么压缩?符合办事提交要求的 3 个方法

办理社保、居住证、线上办事提交材料时,你是不是总遇到这些问题?证件照上传提示 “文件过大”,尺寸不符合系统要求,找不到简单的修改方法,担心改完不符合标准被退回。日常办事证件照多要求 JPG 格式,常见尺…

作者头像 李华