节点ISA对应的acpi!_DEVICE_EXTENSION里面的+0x10c Address是如何得到的

节点ISA对应的acpi!_DEVICE_EXTENSION里面的+0x10c Address是如何得到的

NTSTATUS

ACPIBuildProcessDevicePhaseAdrOrHid(

IN PACPI_BUILD_REQUEST BuildRequest

)

{

NTSTATUS status;

PDEVICE_EXTENSION deviceExtension = (PDEVICE_EXTENSION) BuildRequest->BuildContext;

PNSOBJ nsObject = NULL;

POBJDATA resultData = &(BuildRequest->DeviceRequest.ResultData);

//

// We need to name this node, so lets determine if there is an _HID

// or an _ADR is present

//

nsObject = ACPIAmliGetNamedChild(

deviceExtension->AcpiObject,

PACKED_HID

);
if (nsObject == NULL) {

//

// Otherwise, there had better be an _ADR present

//

nsObject = ACPIAmliGetNamedChild(

deviceExtension->AcpiObject,

PACKED_ADR

);

if (nsObject == NULL) {

//

// At this point, we have an invalid name space object ---

// this should not happen

//

KeBugCheckEx(

ACPI_BIOS_ERROR,

ACPI_REQUIRED_METHOD_NOT_PRESENT,

(ULONG_PTR) deviceExtension,

PACKED_ADR,

0

);

//

// Never get here

//

return STATUS_NO_SUCH_DEVICE;

} else {

//

// If we think there is an ADR, then the correct next stage is

// to post process the ADR

//

BuildRequest->NextWorkDone = WORK_DONE_ADR;

//

// Remember which name space object we are evaluating

//

BuildRequest->CurrentObject = nsObject;

//

// Get the Address

//

status = ACPIGetAddressAsync(

deviceExtension,

ACPIBuildCompleteMustSucceed,

BuildRequest,

(PVOID *) &(deviceExtension->Address),

NULL

);

}

+0x10c Address : 0x70000

1: kd> dt acpi!_DEVICE_EXTENSION 899c0a88

+0x000 Flags : 0x00401000`00000008

+0x000 UFlags : __unnamed

+0x008 Signature : 0x5f534750

+0x00c DebugFlags : 0

+0x010 DispatchTable : (null)

+0x014 WorkContext : WORK_QUEUE_CONTEXT

+0x014 Fdo : _FDO_DEVICE_EXTENSION

+0x014 Filter : _FILTER_DEVICE_EXTENSION

+0x014 Pdo : _PDO_DEVICE_EXTENSION

+0x058 WorkQueue : EXTENSION_WORKER

+0x058 Button : BUTTON_EXTENSION

+0x058 Thermal : THERMAL_EXTENSION

+0x058 LinkNode : LINK_NODE_EXTENSION

+0x058 Dock : DOCK_EXTENSION

+0x058 Processor : _PROCESSOR_DEVICE_EXTENSION

+0x088 DeviceState : 0 ( Stopped )

+0x08c PreviousState : 0 ( Stopped )

+0x090 PowerInfo : _ACPI_POWER_INFO
+0x10c DeviceID : 0x00070000 "--- memory read error at address 0x00070000 ---"
+0x10c Address : 0x70000

+0x110 InstanceID : (null)

+0x114 ResourceList : (null)

+0x118 PnpResourceList : (null)

+0x11c OutstandingIrpCount : 0n1

+0x120 ReferenceCount : 0n52

+0x124 HibernatePathCount : 0n0

+0x128 RemoveEvent : (null)

+0x12c AcpiObject : 0x899b2278 _NSObj

+0x130 DeviceObject : (null)

+0x134 TargetDeviceObject : (null)

+0x138 PhysicalDeviceObject : (null)

+0x13c ParentExtension : 0x899c0d58 _DEVICE_EXTENSION

+0x140 ChildDeviceList : _LIST_ENTRY [ 0x899c0a68 - 0x89979710 ]

+0x148 SiblingDeviceList : _LIST_ENTRY [ 0x89982768 - 0x899c0d38 ]

+0x150 EjectDeviceHead : _LIST_ENTRY [ 0x899c0bd8 - 0x899c0bd8 ]

+0x158 EjectDeviceList : _LIST_ENTRY [ 0x899c0be0 - 0x899c0be0 ]