Windows Phone 8 - частные API?
Можно ли использовать частные API в разработке Windows Phone 8, аналогичные разработке iOS?
Конечно, это НЕ о том, что приложения будут опубликованы (AppStore/Marketplace). Но есть много вариантов использования для непубличных проектов, где разработчик хочет вызвать внутренние системные функции.
С установленным Windows Phone 8 SDK можно смонтировать образ эмулятора Windows Phone 8 Emulator, расположенный в папке "C:\Program Files (x86)\Microsoft SDK\Windows Phone\v8.0\Emulation\Images". В главном разделе Windows Phone OS можно перейти к Windows\System32 и проверить системные DLL файлы с помощью инструмента Dependency Walker или IDA Pro.
Есть много функций, которые звучат очень интересно, но которые не доступны для публики и, следовательно, не документируются. Вопрос в том, можно ли их как-то вызвать из приложения или другими способами?
Несколько примеров интересных функций (их намного больше):
- ShellChrome.dll: InvokeStartMenu, InvokeScreenCapture, InvokeVolumeUp, LockDevice,...
- InputInjection.dll: ApiInjectInitialize, ApiInjectTouchEvent,...
- ...
Я попытался заставить LoadLibrary (в частности, LoadLibraryExA) работать как-то в собственном проекте Windows Phone App, а также загружать и вызывать эти функции (загрузка библиотеки работала). Короче говоря, я закончил с ошибками нарушения прав доступа или аналогичными при попытке вызвать функции (возможно, из изолированной среды исполнения). Другая проблема заключается в том, что я могу только угадать сигнатуры (аргументы) функций. Я не могу найти их с помощью инструментов, которые я использую.
Ответы
Ответ 1
Частный api? Мы можем использовать DLL файлы в телефоне Windows. Я использовал частный sdk в телефоне Windows. Я не думаю, что окна позволят нам настроить ОС так же, как Android, так что Invoke volume up..etc не будет работать через private api.
Ответ 2
Я думаю, что они предоставляют только частную apis только для партнеров с NDA.
http://social.msdn.microsoft.com/forums/wpapps/en-US/4af0e87a-ab4b-4652-891a-f198a32758cf/windows-phone-8-access-to-private-apis
Ответ 3
Вы не можете, песочница приложений будет обеспечивать использование API. Это означает, что вы получите UnauthorizedAccessException каждый раз, когда пытаетесь сделать вызов api, требующий прав, которых у вас нет.
Это тесно связано с учетной записью разработчика, которую вы используете для разблокировки телефона для целей разработки.
EDIT: Это также верно для родной стороны С++.