hal!HalGetBusDataByOffset函数得到设备Device (ISA)字段Field-PIRX字段单元PIRA共1个字节--与上0x80结果是不存在
1: kd> g
Breakpoint 51 hit
eax=00000000 ebx=897a73a8 ecx=00000100 edx=899b3ab0 esi=00000000 edi=00000000
eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalGetBusDataByOffset:
804f25ee 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 7
Buffer = 0x89867e78
Offset = 0x60
Length = 1
bus = struct _BUS_HANDLER
1: kd> kc
#
00 hal!HalGetBusDataByOffset
01 ACPI!PciConfigSpaceHandlerWorker
02 ACPI!GetPciAddressWorker
03 ACPI!ACPIGetWorkerForInteger
04 ACPI!AsyncCallBack
05 ACPI!RunContext
06 ACPI!DispatchCtxtQueue
07 ACPI!StartTimeSlicePassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> kv
# ChildEBP RetAddr Args to Child
00 f791abd8 f740d8c7 00000004 00000000 00000007 hal!HalGetBusDataByOffset (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halacpi\pmbus.c @ 165]
01 f791ac48 f740d0d2 899b00ac 00000000 00000000 ACPI!PciConfigSpaceHandlerWorker+0x29b (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 708]
02 f791acb0 f7407433 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]
03 f791acd8 f741f89b 899b00ac 00000000 897a75ec ACPI!ACPIGetWorkerForInteger+0xcf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4814]
04 f791ad10 f741d905 f7407364 00000000 f743a934 ACPI!AsyncCallBack+0xe7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 81]
05 f791ad34 f742042d 00000000 f7433d3c f743a928 ACPI!RunContext+0x1f5 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 649]
06 f791ad4c f74204ec f743a950 f743b318 f743a9b8 ACPI!DispatchCtxtQueue+0xaf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 150]
07 f791ad64 f74133c5 f743a928 00000000 89981ca0 ACPI!StartTimeSlicePassive+0x57 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 107]
08 f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]
09 f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
0a 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
1: kd> db 899b00ac
899b00ac 68 00 9b 89 f0 00 9b 89-ac ff 9a 89 00 00 00 00 h...............
899b00bc 5f 42 42 4e 30 f3 9a 89-68 00 9b 89 00 00 01 00 _BBN0...h.......
899b00cc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b00dc 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
899b00ec 00 f0 9a 89 ac 00 9b 89-90 01 9b 89 ac ff 9a 89 ................
899b00fc 00 00 00 00 5f 41 44 52-30 f3 9a 89 ac 00 9b 89 ...._ADR0.......
899b010c 00 00 01 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b011c 00 00 00 00 00 00 00 00-00 00 00 00 48 4f 52 47 ............HORG
1: kd> gu
Breakpoint 53 hit
eax=00000001 ebx=897a73a8 ecx=00000000 edx=00000cf8 esi=00000000 edi=00000000
eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!PciConfigSpaceHandlerWorker+0x29b:
f740d8c7 8bf0 mov esi,eax
1: kd>db 0x89867e78
89867e780900 00 00 00 00 00 00-00 00 00 00 08 00 00 00 ................
Device (ISA)
{
Name (_ADR, 0x00070000) // _ADR: Address
OperationRegion (PIRX, PCI_Config, 0x60, 0x04)
Field (PIRX, DWordAcc, NoLock, Preserve)
{
AccessAs (ByteAcc, 0x00),
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8
}
Device (LNKA)
{
Name (_HID, EisaId ("PNP0C0F")) // _HID: Hardware ID
Name (_UID, 0x01) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (And (PIRA, 0x80))
{
Return (0x09)
}
Return (0x0B)
}
}
1: kd> g
Breakpoint 58 hit
eax=00000001 ebx=897a73a8 ecx=00000000 edx=00000cf8 esi=00000001 edi=00000000
eip=f740d8e4 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!PciConfigSpaceHandlerWorker+0x2b8:
f740d8e4 33f6 xor esi,esi
1: kd> dt PCI_CONFIG_STATE 897a73a8
ACPI!PCI_CONFIG_STATE
+0x000 AccessType : 0
+0x004 OpRegion : 0x899b3ab0 _NSObj
+0x008 Address : 0x60
+0x00c Size : 1
+0x010 Data : 0x89867e78 -> 9
+0x014 Context : 0
+0x018 CompletionHandler : 0xf7420914 Void
+0x01c CompletionContext : 0x898660ac Void
+0x020 PciObj : 0x899b2278 _NSObj
+0x024 ParentObj : (null)
+0x028 CompletionHandlerType : 0
+0x02c Flags : 0x1100
+0x030 RunCompletion : 0n2
+0x034 Slot : _PCI_SLOT_NUMBER
+0x038 Bus : 0 ''
+0x039 IsPciDeviceResult : 0 ''
1: kd> db 0x899b3ab0
899b3ab0 f4 36 9b 89 f4 3a 9b 89-78 22 9b 89 00 00 00 00 .6...:..x"......
899b3ac0 50 49 52 58 30 f3 9a 89-e0 39 9b 89 00 00 0a 00PIRX0....9......
899b3ad0 00 00 00 00 00 00 00 00-18 00 00 00 00 22 9b 89 ............."..
899b3ae0 78 22 9b 89 00 00 00 00-48 4e 53 4f 44 00 00 00 x"......HNSOD...
899b3af0 00 f0 9a 89 b0 3a 9b 89-38 3b 9b 89 78 22 9b 89 .....:..8;..x"..
899b3b00 00 00 00 00 00 00 00 00-30 f3 9a 89 b0 3a 9b 89 ........0....:..
899b3b10 00 00 83 00 00 00 00 00-00 00 00 00 04 00 00 00 ................
899b3b20 3c 0b 9b 89 00 00 00 00-00 00 00 00 48 4e 53 4f <...........HNSO
1: kd> db 0x899b2278
899b2278 bc 21 9b 89 68 3c 9b 89-ac ff 9a 89 bc 22 9b 89 .!..h<......."..
899b2288 49 53 41 5f 30 f3 9a 89-34 22 9b 89 00 00 06 00ISA_0...4"......
899b2298 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b22a8 88 0a 9c 89 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
899b22b8 00 f0 9a 89 0c e5 9b 89-00 23 9b 89 78 22 9b 89 .........#..x"..
899b22c8 00 00 00 00 5f 41 44 52-30 f3 9a 89 78 22 9b 89 ...._ADR0...x"..
899b22d8 00 00 01 00 00 00 00 00-00 00 07 00 00 00 00 00 ................
899b22e8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
第二部分:LNKB
1: kd> g
Breakpoint 51 hit
eax=00000000 ebx=897a72c0 ecx=00000100 edx=899b3ab0 esi=00000000 edi=00000000
eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalGetBusDataByOffset:
804f25ee 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 7
Buffer = 0x89865e78
Offset = 0x61
Length = 1
bus = struct _BUS_HANDLER
1: kd> gu
Breakpoint 53 hit
eax=00000001 ebx=897a72c0 ecx=00000000 edx=00000cf8 esi=00000000 edi=00000000
eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!PciConfigSpaceHandlerWorker+0x29b:
f740d8c7 8bf0 mov esi,eax
1: kd> db 0x89865e78
89865e780b00 00 00 01 00 00 00-00 00 00 00 08 00 00 00 ................
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (And (PIRB, 0x80))
{
Return (0x09)
}
Return (0x0B)
}
第三部分:LNKC
1: kd> g
Breakpoint 51 hit
eax=00000000 ebx=897a71d8 ecx=00000100 edx=899b3ab0 esi=00000000 edi=00000000
eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalGetBusDataByOffset:
804f25ee 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 7
Buffer = 0x89863e78
Offset = 0x62
Length = 1
bus = struct _BUS_HANDLER
1: kd> gu
Breakpoint 53 hit
eax=00000001 ebx=897a71d8 ecx=00000000 edx=00000cf8 esi=00000000 edi=00000000
eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!PciConfigSpaceHandlerWorker+0x29b:
f740d8c7 8bf0 mov esi,eax
1: kd> db 0x89863e78
89863e780a00 00 00 02 00 00 00-00 00 00 00 08 00 00 00 ................
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (And (PIRC, 0x80))
{
Return (0x09)
}
Return (0x0B)
}
第四部分:LNKD
1: kd> g
Breakpoint 51 hit
eax=00000000 ebx=897a70f0 ecx=00000100 edx=899b3ab0 esi=00000000 edi=00000000
eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalGetBusDataByOffset:
804f25ee 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 7
Buffer = 0x89861e78
Offset = 0x63
Length = 1
bus = struct _BUS_HANDLER
1: kd> gu
Breakpoint 53 hit
eax=00000001 ebx=897a70f0 ecx=00000000 edx=00000cf8 esi=00000000 edi=00000000
eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!PciConfigSpaceHandlerWorker+0x29b:
f740d8c7 8bf0 mov esi,eax
1: kd> db 0x89861e78
89861e780700 00 00 03 00 00 00-00 00 00 00 08 00 00 00 ................
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (And (PIRD, 0x80))
{
Return (0x09)
}
Return (0x0B)
}