news 2026/4/16 21:32:39

关于处理节点BAT1的时候会调用ACPI!GetOpRegionScope和处理节点BAT2的时候就不用调用ACPI!GetOpRegionScope函数了!!!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于处理节点BAT1的时候会调用ACPI!GetOpRegionScope和处理节点BAT2的时候就不用调用ACPI!GetOpRegionScope函数了!!!

关于处理节点BAT1的时候会调用ACPI!GetOpRegionScope和处理节点BAT2的时候就不用调用ACPI!GetOpRegionScope函数了!!!

第一部分:时间上在前。

https://chenghao.blog.csdn.net/article/details/157065028
处理节点BAT1的时候回调用ACPI!GetOpRegionScope
1: kd> kc
#
00 ACPI!AsyncEvalObject
01 ACPI!AMLIAsyncEvalObject
02 ACPI!ACPIGet
03 ACPI!IsPciDeviceWorker
04 ACPI!IsPciDevice
05 ACPI!GetOpRegionScopeWorker
06 ACPI!GetOpRegionScope
07 ACPI!PciConfigSpaceHandlerWorker

08 ACPI!PciConfigSpaceHandler
09 ACPI!InternalOpRegionHandler
0a ACPI!WriteCookAccess
0b ACPI!RunContext
0c ACPI!InsertReadyQueue
0d ACPI!RestartCtxtPassive
0e ACPI!ACPIWorker
0f nt!PspSystemThreadStartup
10 nt!KiThreadStartup


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

if (!state->OpRegion->Context) {

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

state->Flags |= PCISUPP_GOT_SCOPE;

status = GetOpRegionScope(state->OpRegion,
PciConfigSpaceHandlerWorker,
(PVOID)state,
&((PNSOBJ)(state->OpRegion->Context)));

if (status == STATUS_PENDING) {
return status;
}

if (!NT_SUCCESS(status)) {
status = STATUS_SUCCESS;
goto PciConfigSpaceHandlerWorkerDone;
}
}
}

第二部分:时间上在后。


处理节点BAT2的时候就不用调用ACPI!GetOpRegionScope函数了!!!


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

02 ACPI!PciConfigSpaceHandler
03 ACPI!InternalOpRegionHandler
04 ACPI!WriteCookAccess
05 ACPI!RunContext
06 ACPI!InsertReadyQueue
07 ACPI!RestartCtxtPassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup

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

//
// If we have not seen this OpRegion before, we need to
// fill in the dwContext with the PNSOBJ of the
// PCI device which the OpRegion relates to.
//

if (!state->OpRegion->Context) {

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

state->Flags |= PCISUPP_GOT_SCOPE;

status = GetOpRegionScope(state->OpRegion,
PciConfigSpaceHandlerWorker,
(PVOID)state,
&((PNSOBJ)(state->OpRegion->Context)));

if (status == STATUS_PENDING) {
return status;
}

if (!NT_SUCCESS(status)) {
status = STATUS_SUCCESS;
goto PciConfigSpaceHandlerWorkerDone;
}
}
}

//
// Identify the PCI device, that device's extension,
// and the pointer to the interface within the PCI
// driver that does PCI config space reads and writes.
//

state->PciObj = (PNSOBJ)state->OpRegion->Context;

pciDeviceFilter = (PDEVICE_EXTENSION)state->PciObj->Context;

if (pciDeviceFilter == NULL) {

//
// The device has not been initialized yet, we cannot perform
// PCI config cycles to it. Fail gracefully and return all 0xFF
//
bytes = 0;
status = STATUS_SUCCESS;
goto PciConfigSpaceHandlerWorkerDone;
}

ASSERT(pciDeviceFilter);

interface = pciDeviceFilter->Filter.Interface;

ASSERT(interface ? (interface->Size == sizeof(BUS_INTERFACE_STANDARD)) : TRUE);

//
// If interface is non-zero, we have enumerated this PCI
// device. So use the PCI driver to do config ops.
// If it is zero, make some attempt to figure out what
// device this request is for. The result will be
// used in calls to the HAL.
//

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);

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

计算机毕业设计springboot流浪动物救助系统 基于SpringBoot的流浪宠物在线救助与领养平台 SpringBoot+Vue流浪动物公益管理系统

计算机毕业设计springboot流浪动物救助系统cqy142wz (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。城市化把钢筋水泥铺到每个角落,也把曾经看家护院的小动物挤成了“…

作者头像 李华
网站建设 2026/4/16 13:31:37

sci文献检索入口及使用指南:高效查找科研文献的关键途径

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

作者头像 李华
网站建设 2026/4/16 15:07:17

基于AutoGLM-Phone-9B的移动端AI部署方案|支持视觉语音文本融合

基于AutoGLM-Phone-9B的移动端AI部署方案|支持视觉语音文本融合 1. 技术背景与核心价值 随着移动智能设备对多模态交互需求的快速增长,传统大模型因计算资源消耗高、延迟大等问题难以在端侧高效运行。在此背景下,AutoGLM-Phone-9B 应运而生…

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

智慧口岸EDI系统:赋能洋浦自贸港高效通关

在海南自贸港建设步入快车道的今天,洋浦作为先行区、示范区,正以“智慧口岸”建设为抓手,推动港口运营与通关流程的数字化转型。其中,电子数据交换(EDI)系统作为智慧口岸的核心枢纽,已成为洋浦提…

作者头像 李华
网站建设 2026/4/16 14:26:13

信息管理毕设容易的方向分享

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xff…

作者头像 李华