2013-01-08 7 views
12

Ist es möglich, private APIs in Windows Phone 8 Entwicklung ähnlich der iOS-Entwicklung zu verwenden?Windows Phone 8 - private APIs?

Natürlich geht es NICHT darum, dass Apps veröffentlicht werden (AppStore/Marketplace). Es gibt jedoch viele Anwendungsfälle für nicht-öffentliche Projekte, bei denen ein Entwickler interne Systemfunktionen aufrufen möchte.

Wenn das Windows Phone 8 SDK installiert ist, kann das Windows Phone 8 Emulator-Image unter "C: \ Programme (x86) \ Microsoft SDKs \ Windows Phone \ v8.0 \ Emulation \ Images" installiert werden. In der Hauptpartition des Windows Phone OS kann man zu Windows \ System32 navigieren und die System-DLL-Dateien mit einem Tool wie Dependency Walker oder IDA Pro untersuchen.

Es gibt viele Funktionen, die sehr interessant klingen, die aber nicht öffentlich verfügbar und daher nicht dokumentiert sind. Die Frage ist: Ist es möglich, sie irgendwie aus einer App oder auf andere Weise aufzurufen?

Nur ein paar Beispiele für interessante Funktionen (es gibt eine viel mehr sind):

  • ShellChrome.dll: InvokeStartMenu, InvokeScreenCapture, InvokeVolumeUp, LockDevice, ...
  • InputInjection.dll: ApiInjectInitialize, ApiInjectTouchEvent ...
  • ...

ich habe versucht, Loadlibrary (genauer gesagt, LoadLibraryExA) arbeiten irgendwie in einer nativen Windows Phone App-Projekt, und lo zu bekommen ad und rufe diese Funktionen auf (das Laden der Bibliothek hat funktioniert). Lange Rede, kurzer Sinn, am Ende habe ich Zugriffsverletzungsfehler oder ähnliches beim Versuch, die Funktionen aufzurufen, gefunden (vielleicht wegen der Sandbox-Ausführungsumgebung). Ein anderes Problem ist, dass ich nur die Signaturen (Argumente) der Funktionen erraten kann. Ich kann sie nicht mit den Werkzeugen herausfinden, die ich benutze.

+0

stoßen, eine interessante Frage keine Antwort – AFD

Antwort

0

Private API? Wir können DLL-Dateien im Windows Phone verwenden. Ich habe private SDKs im Windows Phone benutzt. Ich glaube nicht, dass Windows uns erlauben wird, das Betriebssystem so anzupassen, wie es bei Android der Fall ist. Also, Invoke upload..etc stuff wird nicht durch private API funktionieren.

0

Sie können nicht, wird die Anwendungs-Sandbox API-Nutzung erzwingen. Das bedeutet, dass Sie jedes Mal eine UnauthorizedAccessException erhalten, wenn Sie versuchen, einen Anruf an eine API zu senden, die Rechte erfordert, die Sie nicht haben. Dies ist eng mit dem Entwicklerkonto verknüpft, das Sie zum Entsperren Ihres Telefons für Entwicklungszwecke verwenden.

EDIT: Das gilt auch auf der C++ nativen Seite.