我坚持为什么我不能使用LoadLibrary加载我的DLL“interfac”。 加载依赖时似乎失败,但我不知道为什么。
代码如下:
AfxMessageBox(L"before load library"); HMODULE interfacDll = LoadLibrary(TEXT("C:\\QA\\Pcdlrn\\Win32\\Release\\INTERFAC.DLL")); if (!interfacDll) DWORD dw = GetLastError(); // returns 0xc1 (193) AfxMessageBox(L"after load library");
这里是gflags(x86)的加载器捕捉的输出:
18a0:2a40 @ 06858973 - LdrGetDllHandleEx - ENTER: DLL name: ntdll.dll DLL path: NULL 18a0:2a40 @ 06858973 - LdrGetDllHandleEx - INFO: Locating DLL ntdll.dll in path C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows 18a0:2a40 @ 06858989 - LdrpFindLoadedDll - ENTER: DLL name: ntdll.dll DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows 18a0:2a40 @ 06858989 - LdrpFindLoadedDll - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrGetDllHandleEx - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrGetProcedureAddressEx - INFO: Locating procedure "KiUserExceptionDispatcher" by name 18a0:2a40 @ 06858989 - LdrLoadDll - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\syste 18a0:2a40 @ 06858989 - LdrpLoadDll - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\syst 18a0:2a40 @ 06858989 - LdrpLoadDll - INFO: Loading DLL C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL from path C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\sys 18a0:2a40 @ 06858989 - LdrpFindOrMapDll - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows 18a0:2a40 @ 06858989 - LdrpSearchPath - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\s 18a0:2a40 @ 06858989 - LdrpResolveFileName - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06858989 - LdrpResolveFileName - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrpResolveDllName - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06858989 - LdrpResolveDllName - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrpSearchPath - RETURN: Status: 0x00000000 18a0:2a40 @ 06859036 - LdrpMapViewOfSection - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 'CNCServer.exe': Loaded 'C:\QA\Pcdlrn\Win32\Release\INTERFAC.dll', Symbols loaded. 18a0:2a40 @ 06859098 - LdrpMapViewOfSection - RETURN: Status: 0x40000003 18a0:2a40 @ 06859098 - LdrpRelocateImage - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06859098 - LdrpProtectAndRelocateImage - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpRelocateImage - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpFindOrMapDll - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpHandleOneOldFormatImportDescriptor - INFO: DLL "C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL" imports "PCDLRN.exe" 18a0:2a40 @ 06859098 - LdrpLoadImportModule - ENTER: DLL name: PCDLRN.exe DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\W 18a0:2a40 @ 06859098 - LdrpFindOrMapDll - ENTER: DLL name: PCDLRN.exe DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windo 18a0:2a40 @ 06859098 - LdrpFindKnownDll - ENTER: DLL name: PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpFindKnownDll - RETURN: Status: 0xc0000135 18a0:2a40 @ 06859098 - LdrpSearchPath - ENTER: DLL name: PCDLRN.exe DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows 18a0:2a40 @ 06859098 - LdrpResolveFileName - ENTER: DLL name: C:\QA\Pcdlrn\CNCSERVER\Win32\Release\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveFileName - RETURN: Status: 0xc0000135 18a0:2a40 @ 06859098 - LdrpResolveFileName - ENTER: DLL name: C:\Windows\system32\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveFileName - RETURN: Status: 0xc0000135 18a0:2a40 @ 06859098 - LdrpResolveFileName - ENTER: DLL name: C:\Windows\system\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveFileName - RETURN: Status: 0xc0000135 18a0:2a40 @ 06859098 - LdrpResolveFileName - ENTER: DLL name: C:\Windows\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveFileName - RETURN: Status: 0xc0000135 18a0:2a40 @ 06859098 - LdrpResolveFileName - ENTER: DLL name: .\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveFileName - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpResolveDllName - ENTER: DLL name: .\PCDLRN.exe 18a0:2a40 @ 06859098 - LdrpResolveDllName - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpSearchPath - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpMapViewOfSection - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe 'CNCServer.exe': Loaded 'C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe', Symbols loaded. 18a0:2a40 @ 06859597 - LdrpMapViewOfSection - RETURN: Status: 0x40000003 'CNCServer.exe': Unloaded 'C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe' 18a0:2a40 @ 06859597 - LdrpFindOrMapDll - RETURN: Status: 0xc000007b 18a0:2a40 @ 06859597 - LdrpLoadImportModule - ERROR: Loading DLL PCDLRN.exe from path C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C: 18a0:2a40 @ 06859597 - LdrpLoadImportModule - RETURN: Status: 0xc000007b 18a0:2a40 @ 06859597 - LdrpHandleOneOldFormatImportDescriptor - ERROR: Loading "?????" from the import table of DLL "C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL" failed with status 0xc000007b 18a0:2a40 @ 06859613 - LdrpUnloadDll - INFO: Unmapping DLL "C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL" 'CNCServer.exe': Unloaded 'C:\QA\Pcdlrn\Win32\Release\INTERFAC.dll' 18a0:2a40 @ 06859613 - LdrpLoadDll - RETURN: Status: 0xc000007b 18a0:2a40 @ 06859613 - LdrLoadDll - RETURN: Status: 0xc000007b
我应该提到,我使用的是64位窗口,但所有的可执行代码都是针对x86(c#)或win32(c ++)。
我该如何解决这个问题?
任何build议将不胜感激。 非常感谢你。
ps这里是依赖walker输出:
PPS这里是一个屏幕截图,显示我的DLL是x86:
ppps这里是interfac.dll的链接器input:
编辑。 这是dumpbin的输出:
Microsoft (R) COFF/PE Dumper Version 14.00.24210.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file pcdlrn.exe File Type: EXECUTABLE IMAGE Section contains the following exports for PCDLRN.exe 00000000 characteristics 5796AD2A time date stamp Mon Jul 25 20:22:02 2016 0.00 version 1 ordinal base 5784 number of functions 5784 number of names ordinal hint RVA name 1 0 0029CDF0 ??0?$CArray@V?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@V12@@@QAE@XZ = ??0?$CArray@V?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@V12@@@QAE@XZ (public: __thiscall CArray<class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >,class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > >::CArray<class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >,class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > >(void)) ... 5783 1696 02593550 ?zoomOutFine@VisionTargetControls@UIEvents@@YAXXZ = ?zoomOutFine@VisionTargetControls@UIEvents@@YAXXZ (void __cdecl UIEvents::VisionTargetControls::zoomOutFine(void)) 5784 1697 02593640 ?zoomOutMaximum@VisionTargetControls@UIEvents@@YAXXZ = ?zoomOutMaximum@VisionTargetControls@UIEvents@@YAXXZ (void __cdecl UIEvents::VisionTargetControls::zoomOutMaximum(void)) Summary 2C0000 .data 1000 .fnp_dir 1000 .fnp_mar AFA000 .rdata 1B000 .rsrc 2E7A000 .text E5000 .textidx 1000 .tls
对于LoadLibrary
ERROR_BAD_EXE_FORMAT
错误的一个可能的解释是INTERFAC.DLL
与声明PCDLRN
导出的PCDLRN.LIB
导入库链接,但在运行时找到的PCDLRN.EXE
没有导出表 。
gflags (x86)'s loader snaps
显示加载PCDLRN.EXE
触发错误,特别是在解析INTERFAC.DLL
的导入表时:
18a0:2a40 @ 06859098 - LdrpHandleOneOldFormatImportDescriptor - 信息:DLL“C:\ QA \ Pcdlrn \ Win32 \ Release \ INTERFAC.DLL”导入“PCDLRN.exe” [...] 18a0:2a40 @ 06859597 - LdrpHandleOneOldFormatImportDescriptor - 错误:加载“?????” 从DLL“C:\ QA \ Pcdlrn \ Win32 \ Release \ INTERFAC.DLL”的导入表失败,状态为0xc000007b
状态0xc000007b
是STATUS_INVALID_IMAGE_FORMAT :
{Bad Image}%hs不是设计为在Windows上运行,或者是包含错误。 尝试使用原始安装介质再次安装程序,或联系您的系统管理员或软件供应商以获取支持。
NTSTATUS STATUS_INVALID_IMAGE_FORMAT
映射到每个INFO映射到Win 32错误代码ERROR_BAD_EXE_FORMAT
:将NT状态错误代码映射到Win 32错误代码 。
我能够复制相同的ERROR_BAD_EXE_FORMAT给定场景的模型:链接INTERFAC.DLL
到声明一个导出的foo
的PCDLRN.EXE
,然后替换一个PCDLRN.EXE
没有一个导出表,最后尝试LoadLibrary
INTERFAC.DLL
。
作为一个侧面说明,将DLL
到另一个EXE
的导入库是不常见的,充满了陷阱。 在这种情况下,即使错误193被修复, EXE
的函数也不能直接从DLL
。 请参阅例如Load EXE DLL:任务可能的更多细节。
编辑 :虽然以下是有道理的,但实际上是不正确的。 我在这里只是为了参考,但我可能会稍后删除答案。
请注意,即使在文件中有重定位信息的情况下(至少在Windows 10上,我曾经检查过),如果该模块不是一个DLL,它不会被应用,所以即使你没有得到这个错误,除非您的INTERFAC.DLL在加载后将重定位应用于PCLDRN.exe,尝试使用它可能会在某种程度上打破。
随着装载机捕捉输出的情况似乎是非常明显的。
一旦找到文件,加载器捕捉输出是(我编号的行):
(1) 18a0:2a40 @ 06859098 - LdrpMapViewOfSection - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe (2) 'CNCserver.exe': Loaded 'C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe', Symbols loaded. (3) 18a0:2a40 @ 06859597 - LdrpMapViewOfSection - RETURN: Status: 0x40000003 (4) 'CNCserver.exe': Unloaded 'C:\QA\Pcdlrn\Win32\Release\PCDLRN.exe' (5) 18a0:2a40 @ 06859597 - LdrpFindOrMapDll - RETURN: Status: 0xc000007b (6) 18a0:2a40 @ 06859597 - LdrpLoadImportmodulee - ERROR: Loading DLL PCDLRN.exe from path C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C: (7) 18a0:2a40 @ 06859597 - LdrpLoadImportmodulee - RETURN: Status: 0xc000007b (8) 18a0:2a40 @ 06859597 - LdrpHandleOneOldFormatImportDescriptor - ERROR: Loading "?????" from the import table of DLL "C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL" failed with status 0xc000007b (9) 18a0:2a40 @ 06859613 - LdrpUnloadDll - INFO: Unmapping DLL "C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL" (10) 'CNCserver.exe': Unloaded 'C:\QA\Pcdlrn\Win32\Release\INTERFAC.dll' (11) 18a0:2a40 @ 06859613 - LdrpLoadDll - RETURN: Status: 0xc000007b (12) 18a0:2a40 @ 06859613 - LdrLoadDll - RETURN: Status: 0xc000007b
LdrpMapViewOfSection
返回第3行的错误代码(0x40000003),导致模块卸载(第4行),然后LdrpMapViewOfSection
的调用者 – LdrpFindOrMapDll
– 将错误代码转换为0xc000007b(STATUS_INVALID_IMAGE_FORMAT)。
但是导致加载失败的错误是0x40000003 – STATUS_IMAGE_NOT_AT_BASE
。 这个NTSTATUS的描述是:
{Image Relocated}映像文件无法映射到映像文件中指定的地址。 必须在此映像上执行本地修补程序。
(来源: NTSTATUS值 )
默认情况下,EXE不包含重定位信息(如注释中所述)。 通常这不是一个问题,因为当EXE加载到地址空间时,地址空间是相当自由的。 但是你的地址空间不是免费的。 更糟糕的是,所有由Visual C ++编译的EXE默认共享相同的基地址:
/ BASE选项为程序设置基地址,覆盖.exe或DLL文件的默认位置。 .exe文件的默认基地址是32位图像的0x400000或64位图像的0x140000000。 对于DLL,32位图像的默认基地址为0x10000000,64位图像的默认基地址为0x180000000。
(来源: 链接器选项:/ BASE(基地址) )
这可能是你的情况。 CNCserver.exe已占用0x400000,这是PCDLRN.exe唯一的地方。 LdrpMapViewOfSection
无法将PCDLRN.exe映射到0x400000,因为它不是免费的,并且由于没有重定位信息而无法映射到其他地方。
然后从那里调用堆栈并更改错误,但不是根本问题。 缺少搬迁信息。
你可以看到当你的输出中有一个重定位信息的DLL遇到这个错误时发生了什么。 当最初加载INTERFAC.dll时:
18a0:2a40 @ 06858989 - LdrpFindOrMapDll - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows 18a0:2a40 @ 06858989 - LdrpSearchPath - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL DLL path: C:\QA\Pcdlrn\CNCSERVER\Win32\Release;C:\Windows\system32;C:\Windows\system;C:\Windows;.;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\NativeBinaries\x86;C:\windows\system32;C:\windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\s 18a0:2a40 @ 06858989 - LdrpResolveFileName - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06858989 - LdrpResolveFileName - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrpResolveDllName - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06858989 - LdrpResolveDllName - RETURN: Status: 0x00000000 18a0:2a40 @ 06858989 - LdrpSearchPath - RETURN: Status: 0x00000000 18a0:2a40 @ 06859036 - LdrpMapViewOfSection - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 'CNCserver.exe': Loaded 'C:\QA\Pcdlrn\Win32\Release\INTERFAC.dll', Symbols loaded. 18a0:2a40 @ 06859098 - LdrpMapViewOfSection - RETURN: Status: 0x40000003 18a0:2a40 @ 06859098 - LdrpRelocateImage - ENTER: DLL name: C:\QA\Pcdlrn\Win32\Release\INTERFAC.DLL 18a0:2a40 @ 06859098 - LdrpProtectAndRelocateImage - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpRelocateImage - RETURN: Status: 0x00000000 18a0:2a40 @ 06859098 - LdrpFindOrMapDll - RETURN: Status: 0x00000000
当LdrpMapViewOfSection
返回STATUS_IMAGE_NOT_AT_BASE
,它的调用者( LdrpFindOrMapDll
)继续并调用LdrpRelocateImage
,对于PCDLRN.exe显然是不能的。