iOS 開発と同様に、Windows Phone 8 開発でプライベート API を使用することはできますか?
もちろん、これは公開される予定のアプリ (AppStore/Marketplace) に関するものではありません。しかし、開発者が内部システム関数を呼び出したい非公開プロジェクトのユースケースはたくさんあります。
Windows Phone 8 SDK がインストールされていると、にある Windows Phone 8 エミュレーター イメージをマウントできますC:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images
。Windows Phone OS のメイン パーティションでは、Windows\System32 に移動し、Dependency Walker や IDA Pro などのツールを使用してシステム DLL ファイルを調べることができます。
非常に興味深いように思えますが、公開されておらず、文書化されていない関数がたくさんあります。問題は、アプリから、または他の方法でそれらを呼び出すことは可能ですか?
興味深い関数のほんの数例 (他にもたくさんあります):
- ShellChrome.dll: InvokeStartMenu、InvokeScreenCapture、InvokeVolumeUp、LockDevice、...
- InputInjection.dll: ApiInjectInitialize、ApiInjectTouchEvent、...
- ...
LoadLibrary (具体的には LoadLibraryExA) をネイティブの Windows Phone アプリ プロジェクトで何らかの形で動作させ、これらの関数を読み込んで呼び出すことを試みました (ライブラリの読み込みは機能しました)。簡単に言えば、関数を呼び出そうとすると、アクセス違反エラーまたは同様のエラーが発生しました (サンドボックス化された実行環境が原因である可能性があります)。もう 1 つの問題は、関数のシグネチャ (引数) しか推測できないことです。私が使っているツールではそれらを見つけることができません。