识别丢失的DLL /非法Win32 API调用

时间:2017-06-20 17:33:10

标签: uwp windows-runtime windows-store-apps win-universal-app xbox-one

我的问题是我目前正在将一个相当大的库从Win32移植到UWP。到目前为止,我设法解决了许多问题,应用程序在我的Windows 10桌面上运行良好但在Xbox One上无法正常运行。

我已经将链接器路径更改为它们的商店挂件,所以我们不打算对win32 api进行编译,但是只能在商店中使用api,但它总是可能是我错过了一些东西。

现在问题是显而易见的"无法找到depdendent dll(0xc0000135)",我无法使用调试器捕获,因为它发生在ntdll加载exe的加载时间内。

我知道常见的问题排查步骤,例如How to Determine Which Dll Dependency is Failing to Load in Windows Store/Universal Apps?

所以我使用了Dependency Walker,它显示我的DLL实际上只依赖于kernel32.dll,ws2_32.dll,vccorlib140_app.dll,vcruntime140_app.dll以及API-MS-WIN-CRT形式的许多dll - **。 DLL。

根据我的理解,这应该没问题,但是进一步挖掘我看到kernel32.dll依赖于API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL,而后者依赖于禁止的advapi32.dll,因此在user32.dll上

我不知道这是否正确,因为在xbox kernel32.dll上会有其他依赖。

我还使用了Process Monitor,这表明Kernelbase.AppHost.dll会出现问题,因为上次确认加载的dll是sechost.dll和vc ++运行时。之后会有kernel.appcore.dll,可能还有msvcrt.dll。

我知道gflags.exe + sls,这是我需要的,但是它不能在Xbox上运行。实际上我错过了一般在Xbox上进行良好调试的方法,我甚至无法列出所有文件以查看哪些dll存在且哪些不存在。

那么请问,有没有人知道如何进行额外的检查以找出失败的原因?

顺便说一句,我尝试在DLL上使用LoadLibrary()而不是隐含地连接它们,这导致GetLastError即使在PC上也是1114(无法初始化),所以肯定有些奇怪。

0 个答案:

没有答案