Выявление недостающей DLL/ незаконного вызова Win32 API

Моя проблема в том, что я в настоящее время портирую довольно большую библиотеку из Win32 в UWP. До сих пор мне удалось решить многие проблемы, и приложение отлично работает на моем рабочем столе Windows 10, но не удается сделать это на Xbox One.

Я уже изменил пути компоновщика на их подвески магазина, чтобы мы не компилировали против api win32, а только apis, которые есть в магазине, однако всегда может быть, что я что-то пропустил.

Теперь проблема очевидна: "не удалось найти деплентные dll (0xc0000135)", которые я не могу отловить с помощью отладчика, поскольку это происходит во время загрузки, когда ntdll загружает исполняемый файл.

Я знаю общие шаги по устранению неполадок, как описано здесь. Как определить, какая Dll-зависимость не загружается в Магазине Windows / Универсальных приложениях?

Поэтому я использовал Dependency Walker, который показывает, что моя DLL на самом деле зависит только от kernel32.dll, ws2_32.dll, vccorlib140_app.dll, vcruntime140_app.dll и многих DLL в виде API-MS-WIN-CRT-**. Dll.

Насколько я понимаю, это должно быть хорошо, но копаясь дальше, я вижу, что kernel32.dll зависит от API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL, который, в свою очередь, зависит от запрещенного файла advapi32.dll и, следовательно, от user32. длл

Я не знаю, если это правильно, так как на xbox kernel32.dll будет иметь другие зависимости.

Я также использовал Process Monitor, который указывал бы на то, что Kernelbase.AppHost.dll будет проблемой, так как последними подтвержденными загруженными библиотеками являются sechost.dll и среды выполнения vC++. После этого будет kernel.appcore.dll и, возможно, msvcrt.dll.

Я знаю о gflags.exe + sls, который мне нужен, но не работает на Xbox. На самом деле мне не хватает способа для хорошей отладки на Xbox в целом, я даже не могу перечислить все файлы, чтобы увидеть, какие библиотеки присутствуют, а какие нет.

Так что, пожалуйста, у кого-нибудь есть идея, как я могу выполнить дополнительные проверки, чтобы выяснить, что не работает?

Кстати, я попытался использовать LoadLibrary() в библиотеках DLL вместо того, чтобы косвенно связать их, что привело к тому, что GetLastError был 1114 (невозможно инициализировать) даже на ПК, поэтому что-то определенно странно.

0 ответов

Другие вопросы по тегам