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

📅 发布时间:2026/7/5 19:46:31 👁️ 浏览次数:
nt!IopSetupArbiterAndTranslators函数分析之对ResourceTranslator的处理生成translatorEntry
nt!IopSetupArbiterAndTranslators函数分析之对ResourceTranslator的处理生成translatorEntryif (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 searchTranslatorsearchTranslator 0x01 0: kd t0: kd kc#00 nt!IopFindResourceHandlerInfo01 nt!IopSetupArbiterAndTranslators02 nt!IopResourceRequirementsListToReqList03 nt!IopAllocateBootResourcesInternal04 nt!IopAllocateBootResources05 nt!IopReportBootResources06 nt!PiQueryAndAllocateBootResources07 nt!PiProcessNewDeviceNode08 nt!PipProcessDevNodeTree09 nt!PipDeviceActionWorker0a nt!PipRequestDeviceAction0b nt!IopInitializeBootDrivers0c nt!IoInitSystem0d nt!Phase1Initialization0e nt!PspSystemThreadStartup0f nt!KiThreadStartup0: kd dvHandlerType ResourceTranslator (0n1)DeviceNode 0x899c5bc8ResourceType 0x06 HandlerEntry 0xf789a1840: 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 gueax00000000 ebxe12be0b8 ecxe127f306 edx00000000 esie12979d0 edi899c5bc8eip80ca1354 espf789a16c ebpf789a198 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246nt!IopSetupArbiterAndTranslators0x1ee:80ca1354 84c0 test al,al0: kd peax00000000 ebxe12be0b8 ecxe127f306 edx00000000 esie12979d0 edi899c5bc8eip80ca135c espf789a16c ebpf789a198 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246nt!IopSetupArbiterAndTranslators0x1f6:80ca135c 8a4df9 mov cl,byte ptr [ebp-7] ss:0010:f789a19106if (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!IopQueryResourceHandlerInterface01 nt!IopSetupArbiterAndTranslators02 nt!IopResourceRequirementsListToReqList03 nt!IopAllocateBootResourcesInternal04 nt!IopAllocateBootResources05 nt!IopReportBootResources06 nt!PiQueryAndAllocateBootResources07 nt!PiProcessNewDeviceNode08 nt!PipProcessDevNodeTree09 nt!PipDeviceActionWorker0a nt!PipRequestDeviceAction0b nt!IopInitializeBootDrivers0c nt!IoInitSystem0d nt!Phase1Initialization0e nt!PspSystemThreadStartup0f nt!KiThreadStartup0: kd dvHandlerType ResourceTranslator (0n1)DeviceObject 0x899c5d08 Device for \Driver\PnpManagerResourceType 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!IopPnPDispatch01 nt!IofCallDriver02 nt!IopSynchronousCall03 nt!IopQueryResourceHandlerInterface04 nt!IopSetupArbiterAndTranslators05 nt!IopResourceRequirementsListToReqList06 nt!IopAllocateBootResourcesInternal07 nt!IopAllocateBootResources08 nt!IopReportBootResources09 nt!PiQueryAndAllocateBootResources0a nt!PiProcessNewDeviceNode0b nt!PipProcessDevNodeTree0c nt!PipDeviceActionWorker0d nt!PipRequestDeviceAction0e nt!IopInitializeBootDrivers0f nt!IoInitSystem10 nt!Phase1Initialization11 nt!PspSystemThreadStartup12 nt!KiThreadStartup0: kd dvDeviceObject 0x899c5d08 Device for \Driver\PnpManagerIrp 0x899c5468information 0x899c5d08length 8uiNumber 0xf789a0d0id 0x00000000separatorCount 0x80cb0b370: kd !Irp 0x899c5468Irp 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\PnpManagerArgs: f789a144 0000001c e129d9b8 00000006case 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 -rnt!IO_STACK_LOCATION0x000 MajorFunction : 0x1b 0x001 MinorFunction : 0x8 0x002 Flags : 0 0x003 Control : 0 0x004 Parameters : __unnamed0x000 QueryInterface : __unnamed0x000 InterfaceType : 0xf789a144 _GUID {6c154a92-aacf-11d0-8d2a-00a0c906b244}0x004 Size : 0x1c0x006 Version : 00x008 Interface : 0xe129d9b8 _INTERFACE0x00c InterfaceSpecificData : 0x00000006 Void0: kd dt TRANSLATOR_INTERFACE 0xe129d9b8nt!TRANSLATOR_INTERFACE0x000 Size : 0x1c0x002 Version : 00x004 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 0xe129d9b8nt!TRANSLATOR_INTERFACE0x000 Size : 0x1c0x002 Version : 00x004 Context : (null)0x008 InterfaceReference : (null)0x00c InterfaceDereference : (null)0x010 TranslateResources : 0x80caf840 long nt!IopTranslatorHandlerCm00x014 TranslateResourceRequirements : 0x80caf8e2 long nt!IopTranslatorHandlerIo00: kd bp nt!IopTranslatorHandlerCm0: kd bp nt!IopTranslatorHandlerIo0: kd gueax00000000 ebx00000000 ecx00000000 edx00000000 esi899c5468 edi899c5d08eip80a2675c espf789a0c4 ebpf789a0d0 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246nt!IofCallDriver0x62:80a2675c 5f pop edi0: kd gueax00000000 ebx899c5d08 ecx00000000 edx00000000 esif789a144 edi899c54fceip80c95e00 espf789a0d8 ebpf789a100 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246nt!IopSynchronousCall0x1aa:80c95e00 8bf0 mov esi,eax0: kd gueax00000000 ebx0000001c ecx00000008 edx00000000 esie129d9b8 edi00000000eip80c969ff espf789a114 ebpf789a154 iopl0 nv up ei ng nz ac po cycs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000293nt!IopQueryResourceHandlerInterface0x10d:80c969ff 8bd8 mov ebx,eax0: kd gueax00000000 ebxe12be0b8 ecx00000008 edx00000000 esi00000040 edi899c5bc8eip80ca137d espf789a16c ebpf789a198 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246nt!IopSetupArbiterAndTranslators0x217:80ca137d 6609b7da000000 or word ptr [edi0DAh],si ds:0023:899c5ca20000status 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] 原来是0x0if (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 e1294b38nt!PI_RESOURCE_TRANSLATOR_ENTRY0x000 DeviceTranslatorList : _LIST_ENTRY [ 0xe1294b38 - 0xe1294b38 ]0x008 ResourceType : 0x6 0x00c TranslatorInterface : 0xe129d9b8 _TRANSLATOR_INTERFACE0x010 DeviceNode : 0x899c5bc8 _DEVICE_NODE0: 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!ACPIBusIrpQueryInterface0x11b29 e Disable Clear 80ca128f [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c 2701] 0001 (0001) nt!IopSetupArbiterAndTranslators0x12922 e Disable Clear 80ca1263 [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c 2689] 0001 (0001) nt!IopSetupArbiterAndTranslators0xfd断点117 e Disable Clear f743f147 [d:\srv03rtm\base\busdrv\acpi\driver\nt\bus.c 1806] 0001 (0001) ACPI!ACPIBusIrpQueryInterface0x11bif (found FALSE) {arbiterEntry (PPI_RESOURCE_ARBITER_ENTRY)ExAllocatePoolAE(PagedPool | POOL_COLD_ALLOCATION,sizeof(PI_RESOURCE_ARBITER_ENTRY)); 断点1if (!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断点229 e Disable Clear 80ca128f [d:\srv03rtm\base\ntos\io\pnpmgr\pnpres.c 2701] 0001 (0001) nt!IopSetupArbiterAndTranslators0x129if (found FALSE) {translatorEntry (PPI_RESOURCE_TRANSLATOR_ENTRY)ExAllocatePoolTE(PagedPool | POOL_COLD_ALLOCATION,sizeof(PI_RESOURCE_TRANSLATOR_ENTRY)); 断点2if (!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