LoadLibrary失败,错误代码为193

我坚持为什么我不能使用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输出: INTERFAC.dll

PPS这里是一个屏幕截图,显示我的DLL是x86:

86

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到声明一个导出的fooPCDLRN.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显然是不能的。