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

Uwp 识别丢失的DLL/非法Win32 API调用,uwp,windows-runtime,windows-store-apps,win-universal-app,xbox-one,Uwp,Windows Runtime,Windows Store Apps,Win Universal App,Xbox One,我的问题是,我目前正在将一个相当大的库从Win32移植到UWP。到目前为止,我设法解决了许多问题,该应用程序在我的Windows 10桌面上运行良好,但在Xbox One上却无法做到这一点 我已经将链接器路径更改为它们的存储挂起项,因此我们不针对win32 api进行编译,但是只针对存储上可用的api,但是我可能总是遗漏了一些东西 现在的问题是明显的“找不到Depdent DLL(0xc0000135)”,我无法使用调试器捕捉到它,因为它发生在ntdll加载exe的加载时间 我知道这里列出的常见

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

我已经将链接器路径更改为它们的存储挂起项,因此我们不针对win32 api进行编译,但是只针对存储上可用的api,但是我可能总是遗漏了一些东西

现在的问题是明显的“找不到Depdent DLL(0xc0000135)”,我无法使用调试器捕捉到它,因为它发生在ntdll加载exe的加载时间

我知道这里列出的常见故障排除步骤

所以我使用了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,而API-MS-WIN-EVENTING-PROVIDER-L1-0.dll又依赖于禁用的advapi32.dll,因此也依赖于user32.dll

不过,我不知道这是否正确,因为xbox kernel32.dll上还有其他依赖项

我还使用了进程监视器,它会指出Kernelbase.AppHost.dll是问题所在,因为上次确认加载的dll是sechost.dll和vc++运行时。之后将有kernel.appcore.dll,可能还有msvcrt.dll

我知道gflags.exe+sls,这正是我需要的,但在Xbox上不起作用。实际上,我缺少一种在Xbox上进行良好调试的方法。一般来说,我甚至无法列出所有文件来查看哪些DLL存在,哪些不存在

那么,有没有人知道我如何执行额外的检查来找出失败的地方


顺便说一句,我尝试在dll上使用LoadLibrary(),而不是隐式链接它们,这导致GetLastError即使在PC上也为1114(无法初始化),因此肯定有些奇怪。

kernel32.dll是第一个红色标志。Xbox One(或桌面以外的任何其他UWP兼容平台)上不存在该文件-应改为kernelbase.dll。你有没有试着疯跑?它应该告诉你所有错误链接到DLL的API。运行WACK是第一步。但请注意,Kernel32确实存在于其他平台上,您可以针对它链接到允许使用的古怪api。但它只是到KernelBase(或其他DLL)的转发器。里面没有任何真正的代码。