得到节点Device (P2P0)的子节点Device (S1F0)的PCI地址第0部分dsdt.dsl:6096: Device (P2P0)dsdt.dsl:6306: Device (S1F0)Device (S1F0){Name (_ADR, Zero) // _ADR: AddressName (_SUN, 0x20) // _SUN: Slot User NumberOperationRegion (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: AddressName (_SUN, 0x21) // _SUN: Slot User Number第一部分NTSTATUSEXPORTPciConfigSpaceHandlerWorker(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!GetPciAddress01 ACPI!PciConfigSpaceHandlerWorker02 ACPI!GetOpRegionScopeWorker03 ACPI!IsPciDeviceWorker04 ACPI!IsPciDeviceWorker05 ACPI!IsPciDeviceWorker06 ACPI!ACPIGetWorkerForString07 ACPI!AsyncCallBack08 ACPI!RunContext09 ACPI!DispatchCtxtQueue0a ACPI!StartTimeSlicePassive0b ACPI!ACPIWorker0c nt!PspSystemThreadStartup0d nt!KiThreadStartup1: kd dvPciObj 0x8996d45cCompletionRoutine 0xf740d62cContext 0x898a8a10Bus 0x898a8a48 Slot 0x898a8a441: 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 0x8996cd788996cd78 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 ............HNSO8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......1: kd kc#00 ACPI!GetPciAddressWorker01 ACPI!GetPciAddress02 ACPI!PciConfigSpaceHandlerWorker03 ACPI!GetOpRegionScopeWorker04 ACPI!IsPciDeviceWorker05 ACPI!IsPciDeviceWorker06 ACPI!IsPciDeviceWorker07 ACPI!ACPIGetWorkerForString08 ACPI!AsyncCallBack09 ACPI!RunContext0a ACPI!DispatchCtxtQueue0b ACPI!StartTimeSlicePassive0c ACPI!ACPIWorker0d nt!PspSystemThreadStartup0e nt!KiThreadStartup1: kd dvAcpiObject 0x8996d45cStatus 0n0Result 0x00000000Context 0x899c1460buffer unsigned char [64] 1: kd dt GET_ADDRESS_CONTEXT 0x899c1460ACPI!GET_ADDRESS_CONTEXT0x000 PciObject : 0x8996d45c _NSObj0x004 Bus : 0x898a8a48 0x008 Slot : 0x898a8a44 _PCI_SLOT_NUMBER0x00c ParentBus : 0 0x010 ParentSlot : _PCI_SLOT_NUMBER0x014 Flags : 00x018 Address : 00x01c BaseBusNumber : 00x020 RunCompletion : 0n-10x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker00x028 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!ACPIGet01 ACPI!GetPciAddressWorker02 ACPI!GetPciAddress03 ACPI!PciConfigSpaceHandlerWorker04 ACPI!GetOpRegionScopeWorker05 ACPI!IsPciDeviceWorker06 ACPI!IsPciDeviceWorker07 ACPI!IsPciDeviceWorker08 ACPI!ACPIGetWorkerForString09 ACPI!AsyncCallBack0a ACPI!RunContext0b ACPI!DispatchCtxtQueue0c ACPI!StartTimeSlicePassive0d ACPI!ACPIWorker0e nt!PspSystemThreadStartup0f nt!KiThreadStartup1: kd dvTarget 0x8996d45cObjectID 0x5244415fFlags 0x48040402SimpleArgument 0x00000000SimpleArgumentSize 01: kd db 0x8996d45c8996d45c 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 0x8996d45c8996d45c 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 ............HNSO8996d4cc 44 00 00 00 00 90 96 89-1c d8 96 89 18 d5 96 89 D...............1: kd dt nsobj 0x8996d45cACPI!NSOBJ0x000 list : _List0x008 pnsParent : 0x8996cd78 _NSObj0x00c pnsFirstChild : 0x8996d4d4 _NSObj0x010 dwNameSeg : 0x304631530x014 hOwner : 0x899af330 Void0x018 pnsOwnedNext : 0x8996d298 _NSObj0x01c ObjData : _ObjData0x030 Context : 0x89968c88 Void0x034 dwRefCount : 01: kd db 0x8996cd788996cd78 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 ................