news 2026/4/23 5:21:58

nt!IopSetupArbiterAndTranslators函数分析之对ResourceTranslator的处理生成translatorEntry

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nt!IopSetupArbiterAndTranslators函数分析之对ResourceTranslator的处理生成translatorEntry

nt!IopSetupArbiterAndTranslators函数分析之对ResourceTranslator的处理生成translatorEntry

if (searchTranslator) {
//
// First, check if there is a translator for the device node?
// If yes, translate the req desc and link it to the front of ReqDesc->TranslatedReqDesc
// else do nothing.
//

found = IopFindResourceHandlerInfo(
ResourceTranslator,
deviceNode,
resourceType,
&translatorEntry);

0: kd> dv searchTranslator
searchTranslator = 0x01 ''
0: kd> t

0: kd> kc
#
00 nt!IopFindResourceHandlerInfo
01 nt!IopSetupArbiterAndTranslators
02 nt!IopResourceRequirementsListToReqList
03 nt!IopAllocateBootResourcesInternal
04 nt!IopAllocateBootResources
05 nt!IopReportBootResources
06 nt!PiQueryAndAllocateBootResources
07 nt!PiProcessNewDeviceNode
08 nt!PipProcessDevNodeTree
09 nt!PipDeviceActionWorker
0a nt!PipRequestDeviceAction
0b nt!IopInitializeBootDrivers
0c nt!IoInitSystem
0d nt!Phase1Initialization
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup
0: kd> dv
HandlerType = ResourceTranslator (0n1)
DeviceNode = 0x899c5bc8
ResourceType = 0x06 ''
HandlerEntry = 0xf789a184

0: kd> dx -r1 ((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8)
((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8) : 0x899c5bc8 [Type: _DEVICE_NODE *]
[+0x000] Sibling : 0x0 [Type: _DEVICE_NODE *]
[+0x004] Child : 0x899c5850 [Type: _DEVICE_NODE *]
[+0x008] Parent : 0x0 [Type: _DEVICE_NODE *]
[+0x00c] LastChild : 0x89983478 [Type: _DEVICE_NODE *]
[+0x010] Level : 0x0 [Type: unsigned long]
[+0x014] Notify : 0x0 [Type: _PO_DEVICE_NOTIFY *]
[+0x018] State : DeviceNodeStarted (776) [Type: _PNP_DEVNODE_STATE]
[+0x01c] PreviousState : DeviceNodeEnumerateCompletion (781) [Type: _PNP_DEVNODE_STATE]
[+0x020] StateHistory [Type: _PNP_DEVNODE_STATE [20]]
[+0x070] StateHistoryEntry : 0x5 [Type: unsigned long]
[+0x074] CompletionStatus : 0 [Type: long]
[+0x078] PendingIrp : 0x0 [Type: _IRP *]
[+0x07c] Flags : 0x131 [Type: unsigned long]
[+0x080] UserFlags : 0x0 [Type: unsigned long]
[+0x084] Problem : 0x0 [Type: unsigned long]
[+0x088] PhysicalDeviceObject : 0x899c5d08 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
[+0x08c] ResourceList : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x090] ResourceListTranslated : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x094] InstancePath : "HTREE\ROOT\0" [Type: _UNICODE_STRING]
[+0x09c] ServiceName : "" [Type: _UNICODE_STRING]
[+0x0a4] DuplicatePDO : 0x0 [Type: _DEVICE_OBJECT *]
[+0x0a8] ResourceRequirements : 0x0 [Type: _IO_RESOURCE_REQUIREMENTS_LIST *]
[+0x0ac] InterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b0] BusNumber : 0xffffffff [Type: unsigned long]
[+0x0b4] ChildInterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b8] ChildBusNumber : 0xffffffff [Type: unsigned long]
[+0x0bc] ChildBusTypeIndex : 0xffff [Type: unsigned short]
[+0x0be] RemovalPolicy : 0x0 [Type: unsigned char]
[+0x0bf] HardwareRemovalPolicy : 0x0 [Type: unsigned char]
[+0x0c0] TargetDeviceNotify [Type: _LIST_ENTRY]
[+0x0c8] DeviceArbiterList [Type: _LIST_ENTRY]
[+0x0d0] DeviceTranslatorList [Type: _LIST_ENTRY]
[+0x0d8] NoTranslatorMask : 0x0 [Type: unsigned short] [+0x0d8] NoTranslatorMask
[+0x0da] QueryTranslatorMask : 0x0 [Type: unsigned short]
[+0x0dc] NoArbiterMask : 0x0 [Type: unsigned short]
[+0x0de] QueryArbiterMask : 0x44 [Type: unsigned short]
[+0x0e0] OverUsed1 [Type: __unnamed]
[+0x0e4] OverUsed2 [Type: __unnamed]
[+0x0e8] BootResources : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x0ec] CapabilityFlags : 0x0 [Type: unsigned long]
[+0x0f0] DockInfo [Type: __unnamed]
[+0x100] DisableableDepends : 0x0 [Type: unsigned long]
[+0x104] PendedSetInterfaceState [Type: _LIST_ENTRY]
[+0x10c] LegacyBusListEntry [Type: _LIST_ENTRY]

[+0x0d0] DeviceTranslatorList [Type: _LIST_ENTRY]

0: kd> dx -r1 (*((ntkrnlmp!_LIST_ENTRY *)0x899c5c98))
(*((ntkrnlmp!_LIST_ENTRY *)0x899c5c98)) [Type: _LIST_ENTRY]
[+0x000] Flink : 0x899c5c98 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x899c5c98 [Type: _LIST_ENTRY *]

case ResourceTranslator:

noHandlerMask = DeviceNode->NoTranslatorMask;
queryHandlerMask = DeviceNode->QueryTranslatorMask;
listHead = &DeviceNode->DeviceTranslatorList;
break;

0: kd> gu
eax=00000000 ebx=e12be0b8 ecx=e127f306 edx=00000000 esi=e12979d0 edi=899c5bc8
eip=80ca1354 esp=f789a16c ebp=f789a198 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopSetupArbiterAndTranslators+0x1ee:
80ca1354 84c0 test al,al
0: kd> p
eax=00000000 ebx=e12be0b8 ecx=e127f306 edx=00000000 esi=e12979d0 edi=899c5bc8
eip=80ca135c esp=f789a16c ebp=f789a198 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopSetupArbiterAndTranslators+0x1f6:
80ca135c 8a4df9 mov cl,byte ptr [ebp-7] ss:0010:f789a191=06

if (resourceType <= PI_MAXIMUM_RESOURCE_TYPE_TRACKED) {
resourceMask = 1 << resourceType;
} else {
resourceMask = 0;
}
status = IopQueryResourceHandlerInterface(ResourceTranslator,
deviceNode->PhysicalDeviceObject,
resourceType,
&interface);
deviceNode->QueryTranslatorMask |= resourceMask;


0: kd> kc
#
00 nt!IopQueryResourceHandlerInterface
01 nt!IopSetupArbiterAndTranslators
02 nt!IopResourceRequirementsListToReqList
03 nt!IopAllocateBootResourcesInternal
04 nt!IopAllocateBootResources
05 nt!IopReportBootResources
06 nt!PiQueryAndAllocateBootResources
07 nt!PiProcessNewDeviceNode
08 nt!PipProcessDevNodeTree
09 nt!PipDeviceActionWorker
0a nt!PipRequestDeviceAction
0b nt!IopInitializeBootDrivers
0c nt!IoInitSystem
0d nt!Phase1Initialization
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup
0: kd> dv
HandlerType = ResourceTranslator (0n1)
DeviceObject = 0x899c5d08 Device for "\Driver\PnpManager"
ResourceType = 0x06 ''


switch (HandlerType) {
case ResourceTranslator:
size = sizeof(TRANSLATOR_INTERFACE) + 4; // Pnptest
//size = sizeof(TRANSLATOR_INTERFACE);
interfaceType = GUID_TRANSLATOR_INTERFACE_STANDARD;
break;

0: kd> kc
#
00 nt!IopPnPDispatch
01 nt!IofCallDriver
02 nt!IopSynchronousCall
03 nt!IopQueryResourceHandlerInterface
04 nt!IopSetupArbiterAndTranslators
05 nt!IopResourceRequirementsListToReqList
06 nt!IopAllocateBootResourcesInternal
07 nt!IopAllocateBootResources
08 nt!IopReportBootResources
09 nt!PiQueryAndAllocateBootResources
0a nt!PiProcessNewDeviceNode
0b nt!PipProcessDevNodeTree
0c nt!PipDeviceActionWorker
0d nt!PipRequestDeviceAction
0e nt!IopInitializeBootDrivers
0f nt!IoInitSystem
10 nt!Phase1Initialization
11 nt!PspSystemThreadStartup
12 nt!KiThreadStartup
0: kd> dv
DeviceObject = 0x899c5d08 Device for "\Driver\PnpManager"
Irp = 0x899c5468
information = 0x899c5d08
length = 8
uiNumber = 0xf789a0d0
id = 0x00000000
separatorCount = 0x80cb0b37
0: kd> !Irp 0x899c5468
Irp is active with 1 stacks 1 is current (= 0x899c54d8)
No Mdl: No System Buffer: Thread 899a1020: Irp stack trace.
cmd flg cl Device File Completion-Context
>[IRP_MJ_PNP(1b), IRP_MN_QUERY_INTERFACE(8)]
0 0 899c5d08 00000000 00000000-00000000
\Driver\PnpManager
Args: f789a144 0000001c e129d9b8 00000006

case IRP_MN_QUERY_INTERFACE:
status = Irp->IoStatus.Status;
deviceNode = (PDEVICE_NODE)DeviceObject->DeviceObjectExtension->DeviceNode;
if (deviceNode == IopRootDeviceNode) {
if ( IopCompareGuid((PVOID)irpSp->Parameters.QueryInterface.InterfaceType, (PVOID)&GUID_ARBITER_INTERFACE_STANDARD)) {
status = STATUS_SUCCESS;
arbiterInterface = (PARBITER_INTERFACE) irpSp->Parameters.QueryInterface.Interface;
arbiterInterface->ArbiterHandler = ArbArbiterHandler;
switch ((UCHAR)((ULONG_PTR)irpSp->Parameters.QueryInterface.InterfaceSpecificData)) {
case CmResourceTypePort:
arbiterInterface->Context = (PVOID) &IopRootPortArbiter;
break;
case CmResourceTypeMemory:
arbiterInterface->Context = (PVOID) &IopRootMemArbiter;
break;
case CmResourceTypeInterrupt:
arbiterInterface->Context = (PVOID) &IopRootIrqArbiter;
break;
case CmResourceTypeDma:
arbiterInterface->Context = (PVOID) &IopRootDmaArbiter;
break;
case CmResourceTypeBusNumber:
arbiterInterface->Context = (PVOID) &IopRootBusNumberArbiter;
break;
default:
status = STATUS_INVALID_PARAMETER;
break;
}
} else if ( IopCompareGuid((PVOID)irpSp->Parameters.QueryInterface.InterfaceType, (PVOID)&GUID_TRANSLATOR_INTERFACE_STANDARD)) {
translatorInterface = (PTRANSLATOR_INTERFACE) irpSp->Parameters.QueryInterface.Interface;
translatorInterface->TranslateResources = IopTranslatorHandlerCm;
translatorInterface->TranslateResourceRequirements = IopTranslatorHandlerIo;

status = STATUS_SUCCESS;
}
}
break;

0: kd> dt IO_STACK_LOCATION 899c54d8 -r
nt!IO_STACK_LOCATION
+0x000 MajorFunction : 0x1b ''
+0x001 MinorFunction : 0x8 ''
+0x002 Flags : 0 ''
+0x003 Control : 0 ''
+0x004 Parameters : __unnamed
+0x000 QueryInterface : __unnamed
+0x000 InterfaceType : 0xf789a144 _GUID {6c154a92-aacf-11d0-8d2a-00a0c906b244}
+0x004 Size : 0x1c
+0x006 Version : 0
+0x008 Interface : 0xe129d9b8 _INTERFACE
+0x00c InterfaceSpecificData : 0x00000006 Void

0: kd> dt TRANSLATOR_INTERFACE 0xe129d9b8
nt!TRANSLATOR_INTERFACE
+0x000 Size : 0x1c
+0x002 Version : 0
+0x004 Context : (null)
+0x008 InterfaceReference : (null)
+0x00c InterfaceDereference : (null)
+0x010 TranslateResources : (null)
+0x014 TranslateResourceRequirements : (null)

DEFINE_GUID( GUID_TRANSLATOR_INTERFACE_STANDARD, 0x6c154a92L, 0xaacf, 0x11d0, 0x8d, 0x2a, 0x00, 0xa0, 0xc9, 0x06, 0xb2, 0x44 );

} else if ( IopCompareGuid((PVOID)irpSp->Parameters.QueryInterface.InterfaceType, (PVOID)&GUID_TRANSLATOR_INTERFACE_STANDARD)) {
translatorInterface = (PTRANSLATOR_INTERFACE) irpSp->Parameters.QueryInterface.Interface;
translatorInterface->TranslateResources = IopTranslatorHandlerCm;
translatorInterface->TranslateResourceRequirements = IopTranslatorHandlerIo;
status = STATUS_SUCCESS;
}

0: kd> dt TRANSLATOR_INTERFACE 0xe129d9b8
nt!TRANSLATOR_INTERFACE
+0x000 Size : 0x1c
+0x002 Version : 0
+0x004 Context : (null)
+0x008 InterfaceReference : (null)
+0x00c InterfaceDereference : (null)
+0x010 TranslateResources : 0x80caf840 long nt!IopTranslatorHandlerCm+0
+0x014 TranslateResourceRequirements : 0x80caf8e2 long nt!IopTranslatorHandlerIo+0

0: kd> bp nt!IopTranslatorHandlerCm
0: kd> bp nt!IopTranslatorHandlerIo


0: kd> gu
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=899c5468 edi=899c5d08
eip=80a2675c esp=f789a0c4 ebp=f789a0d0 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IofCallDriver+0x62:
80a2675c 5f pop edi
0: kd> gu
eax=00000000 ebx=899c5d08 ecx=00000000 edx=00000000 esi=f789a144 edi=899c54fc
eip=80c95e00 esp=f789a0d8 ebp=f789a100 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopSynchronousCall+0x1aa:
80c95e00 8bf0 mov esi,eax
0: kd> gu
eax=00000000 ebx=0000001c ecx=00000008 edx=00000000 esi=e129d9b8 edi=00000000
eip=80c969ff esp=f789a114 ebp=f789a154 iopl=0 nv up ei ng nz ac po cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000293
nt!IopQueryResourceHandlerInterface+0x10d:
80c969ff 8bd8 mov ebx,eax
0: kd> gu
eax=00000000 ebx=e12be0b8 ecx=00000008 edx=00000000 esi=00000040 edi=899c5bc8
eip=80ca137d esp=f789a16c ebp=f789a198 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopSetupArbiterAndTranslators+0x217:
80ca137d 6609b7da000000 or word ptr [edi+0DAh],si ds:0023:899c5ca2=0000


status = IopQueryResourceHandlerInterface(ResourceTranslator,
deviceNode->PhysicalDeviceObject,
resourceType,
&interface);
deviceNode->QueryTranslatorMask |= resourceMask;


0: kd> dx -r1 ((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8)
((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8) : 0x899c5bc8 [Type: _DEVICE_NODE *]
[+0x000] Sibling : 0x0 [Type: _DEVICE_NODE *]
[+0x004] Child : 0x899c5850 [Type: _DEVICE_NODE *]
[+0x008] Parent : 0x0 [Type: _DEVICE_NODE *]
[+0x00c] LastChild : 0x89983478 [Type: _DEVICE_NODE *]
[+0x010] Level : 0x0 [Type: unsigned long]
[+0x014] Notify : 0x0 [Type: _PO_DEVICE_NOTIFY *]
[+0x018] State : DeviceNodeStarted (776) [Type: _PNP_DEVNODE_STATE]
[+0x01c] PreviousState : DeviceNodeEnumerateCompletion (781) [Type: _PNP_DEVNODE_STATE]
[+0x020] StateHistory [Type: _PNP_DEVNODE_STATE [20]]
[+0x070] StateHistoryEntry : 0x5 [Type: unsigned long]
[+0x074] CompletionStatus : 0 [Type: long]
[+0x078] PendingIrp : 0x0 [Type: _IRP *]
[+0x07c] Flags : 0x131 [Type: unsigned long]
[+0x080] UserFlags : 0x0 [Type: unsigned long]
[+0x084] Problem : 0x0 [Type: unsigned long]
[+0x088] PhysicalDeviceObject : 0x899c5d08 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
[+0x08c] ResourceList : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x090] ResourceListTranslated : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x094] InstancePath : "HTREE\ROOT\0" [Type: _UNICODE_STRING]
[+0x09c] ServiceName : "" [Type: _UNICODE_STRING]
[+0x0a4] DuplicatePDO : 0x0 [Type: _DEVICE_OBJECT *]
[+0x0a8] ResourceRequirements : 0x0 [Type: _IO_RESOURCE_REQUIREMENTS_LIST *]
[+0x0ac] InterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b0] BusNumber : 0xffffffff [Type: unsigned long]
[+0x0b4] ChildInterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b8] ChildBusNumber : 0xffffffff [Type: unsigned long]
[+0x0bc] ChildBusTypeIndex : 0xffff [Type: unsigned short]
[+0x0be] RemovalPolicy : 0x0 [Type: unsigned char]
[+0x0bf] HardwareRemovalPolicy : 0x0 [Type: unsigned char]
[+0x0c0] TargetDeviceNotify [Type: _LIST_ENTRY]
[+0x0c8] DeviceArbiterList [Type: _LIST_ENTRY]
[+0x0d0] DeviceTranslatorList [Type: _LIST_ENTRY]
[+0x0d8] NoTranslatorMask : 0x0 [Type: unsigned short]
[+0x0da] QueryTranslatorMask : 0x40 [Type: unsigned short] 原来是0x0

if (found == FALSE) {
translatorEntry = (PPI_RESOURCE_TRANSLATOR_ENTRY)ExAllocatePoolTE(
PagedPool | POOL_COLD_ALLOCATION,
sizeof(PI_RESOURCE_TRANSLATOR_ENTRY));
if (!translatorEntry) {
status = STATUS_INSUFFICIENT_RESOURCES;
return status;
}
translatorEntry->ResourceType = resourceType;
InitializeListHead(&translatorEntry->DeviceTranslatorList);
translatorEntry->TranslatorInterface = (PTRANSLATOR_INTERFACE)interface;
translatorEntry->DeviceNode = deviceNode;
listHead = &deviceNode->DeviceTranslatorList;
InsertTailList(listHead, &translatorEntry->DeviceTranslatorList);
if (!interface) {


0: kd> dt PI_RESOURCE_TRANSLATOR_ENTRY e1294b38
nt!PI_RESOURCE_TRANSLATOR_ENTRY
+0x000 DeviceTranslatorList : _LIST_ENTRY [ 0xe1294b38 - 0xe1294b38 ]
+0x008 ResourceType : 0x6 ''
+0x00c TranslatorInterface : 0xe129d9b8 _TRANSLATOR_INTERFACE
+0x010 DeviceNode : 0x899c5bc8 _DEVICE_NODE

0: kd> dx -r1 ((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8)
((ntkrnlmp!_DEVICE_NODE *)0x899c5bc8) : 0x899c5bc8 [Type: _DEVICE_NODE *]
[+0x000] Sibling : 0x0 [Type: _DEVICE_NODE *]
[+0x004] Child : 0x899c5850 [Type: _DEVICE_NODE *]
[+0x008] Parent : 0x0 [Type: _DEVICE_NODE *]
[+0x00c] LastChild : 0x89983478 [Type: _DEVICE_NODE *]
[+0x010] Level : 0x0 [Type: unsigned long]
[+0x014] Notify : 0x0 [Type: _PO_DEVICE_NOTIFY *]
[+0x018] State : DeviceNodeStarted (776) [Type: _PNP_DEVNODE_STATE]
[+0x01c] PreviousState : DeviceNodeEnumerateCompletion (781) [Type: _PNP_DEVNODE_STATE]
[+0x020] StateHistory [Type: _PNP_DEVNODE_STATE [20]]
[+0x070] StateHistoryEntry : 0x5 [Type: unsigned long]
[+0x074] CompletionStatus : 0 [Type: long]
[+0x078] PendingIrp : 0x0 [Type: _IRP *]
[+0x07c] Flags : 0x131 [Type: unsigned long]
[+0x080] UserFlags : 0x0 [Type: unsigned long]
[+0x084] Problem : 0x0 [Type: unsigned long]
[+0x088] PhysicalDeviceObject : 0x899c5d08 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
[+0x08c] ResourceList : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x090] ResourceListTranslated : 0x0 [Type: _CM_RESOURCE_LIST *]
[+0x094] InstancePath : "HTREE\ROOT\0" [Type: _UNICODE_STRING]
[+0x09c] ServiceName : "" [Type: _UNICODE_STRING]
[+0x0a4] DuplicatePDO : 0x0 [Type: _DEVICE_OBJECT *]
[+0x0a8] ResourceRequirements : 0x0 [Type: _IO_RESOURCE_REQUIREMENTS_LIST *]
[+0x0ac] InterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b0] BusNumber : 0xffffffff [Type: unsigned long]
[+0x0b4] ChildInterfaceType : InterfaceTypeUndefined (-1) [Type: _INTERFACE_TYPE]
[+0x0b8] ChildBusNumber : 0xffffffff [Type: unsigned long]
[+0x0bc] ChildBusTypeIndex : 0xffff [Type: unsigned short]
[+0x0be] RemovalPolicy : 0x0 [Type: unsigned char]
[+0x0bf] HardwareRemovalPolicy : 0x0 [Type: unsigned char]
[+0x0c0] TargetDeviceNotify [Type: _LIST_ENTRY]
[+0x0c8] DeviceArbiterList [Type: _LIST_ENTRY]
[+0x0d0] DeviceTranslatorList [Type: _LIST_ENTRY]

0: kd> dx -r1 (*((ntkrnlmp!_LIST_ENTRY *)0x899c5c98))
(*((ntkrnlmp!_LIST_ENTRY *)0x899c5c98)) [Type: _LIST_ENTRY]
[+0x000] Flink : 0xe1294b38[Type: _LIST_ENTRY *]
[+0x004] Blink : 0xe1294b38 [Type: _LIST_ENTRY *]

if (translatorEntry) {
translatorFound = TRUE;
}
17 e Disable Clear f743f147 [d:\srv03rtm\base\busdrv\acpi\driver\nt\bus.c @ 1806] 0001 (0001) ACPI!ACPIBusIrpQueryInterface+0x11b
29 e Disable Clear 80ca128f [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c @ 2701] 0001 (0001) nt!IopSetupArbiterAndTranslators+0x129
22 e Disable Clear 80ca1263 [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c @ 2689] 0001 (0001) nt!IopSetupArbiterAndTranslators+0xfd

断点1:
17 e Disable Clear f743f147 [d:\srv03rtm\base\busdrv\acpi\driver\nt\bus.c @ 1806] 0001 (0001) ACPI!ACPIBusIrpQueryInterface+0x11b

if (found == FALSE) {
arbiterEntry = (PPI_RESOURCE_ARBITER_ENTRY)ExAllocatePoolAE(
PagedPool | POOL_COLD_ALLOCATION,
sizeof(PI_RESOURCE_ARBITER_ENTRY)); 断点1:
if (!arbiterEntry) {
status = STATUS_INSUFFICIENT_RESOURCES;
return status;
}
IopInitializeArbiterEntryState(arbiterEntry);
InitializeListHead(&arbiterEntry->DeviceArbiterList);
arbiterEntry->ResourceType = resourceType;
arbiterEntry->Level = deviceNode->Level;
listHead = &deviceNode->DeviceArbiterList;
InsertTailList(listHead, &arbiterEntry->DeviceArbiterList);
arbiterEntry->ArbiterInterface = (PARBITER_INTERFACE)interface;
if (!interface) {

断点1:
断点2:

29 e Disable Clear 80ca128f [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c @ 2701] 0001 (0001) nt!IopSetupArbiterAndTranslators+0x129
if (found == FALSE) {
translatorEntry = (PPI_RESOURCE_TRANSLATOR_ENTRY)ExAllocatePoolTE(
PagedPool | POOL_COLD_ALLOCATION,
sizeof(PI_RESOURCE_TRANSLATOR_ENTRY)); 断点2:
if (!translatorEntry) {
status = STATUS_INSUFFICIENT_RESOURCES;
return status;
}
translatorEntry->ResourceType = resourceType;
InitializeListHead(&translatorEntry->DeviceTranslatorList);
translatorEntry->TranslatorInterface = (PTRANSLATOR_INTERFACE)interface;
translatorEntry->DeviceNode = deviceNode;
listHead = &deviceNode->DeviceTranslatorList;
InsertTailList(listHead, &translatorEntry->DeviceTranslatorList);
if (!interface) {
断点2:

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

5个步骤掌握cpp-httplib:C++轻量级HTTP库快速开发实战指南

5个步骤掌握cpp-httplib&#xff1a;C轻量级HTTP库快速开发实战指南 【免费下载链接】cpp-httplib A C header-only HTTP/HTTPS server and client library 项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib 你是否曾遇到在C项目中需要快速实现HTTP功能&a…

作者头像 李华
网站建设 2026/4/18 16:35:51

3招解决Nginx Ingress镜像加速难题

3招解决Nginx Ingress镜像加速难题 【免费下载链接】public-image-mirror 很多镜像都在国外。比如 gcr 。国内下载很慢&#xff0c;需要加速。 项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror 你是否曾在部署Kubernetes集群时&#xff0c;因k8s…

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

LTX2-Rapid-Merges:快速实现图文转视频的AI模型

LTX2-Rapid-Merges&#xff1a;快速实现图文转视频的AI模型 【免费下载链接】LTX2-Rapid-Merges 项目地址: https://ai.gitcode.com/hf_mirrors/Phr00t/LTX2-Rapid-Merges 导语&#xff1a;LTX2-Rapid-Merges作为一款基于LTX-2模型的优化版本&#xff0c;通过模型合并与…

作者头像 李华
网站建设 2026/4/3 12:48:48

Qwen3-Embedding-4B:40亿参数文本嵌入新突破

Qwen3-Embedding-4B&#xff1a;40亿参数文本嵌入新突破 【免费下载链接】Qwen3-Embedding-4B 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-Embedding-4B 导语&#xff1a;阿里达摩院推出Qwen3-Embedding-4B文本嵌入模型&#xff0c;以40亿参数实现性能与…

作者头像 李华
网站建设 2026/4/18 14:30:02

5步精通SuperPuTTY:从环境配置到企业级工作流设计

5步精通SuperPuTTY&#xff1a;从环境配置到企业级工作流设计 【免费下载链接】superputty The SuperPuTTY Window Manager for putty sessions 项目地址: https://gitcode.com/gh_mirrors/su/superputty 一、核心功能特性解析 SuperPuTTY作为一款基于Windows的终端管理…

作者头像 李华