私が知る限り、これについて電話をかけるのは時期尚早です。私は個人的に、VirtualProtect() を使用せずにジッターを書き込む方法を知りません。これは、ジッターによって生成されたマシン コードでメモリのチャンクを実行可能コードに変換できるコア winapi 関数です。
WinRT アプリで使用できるネイティブの winapi 関数が多数あります。祝福されたシステム機能のリストは、こちらから入手できます。メモリ関連の API はかなり限られていますが、VirtualQuery はリスト内で唯一近いものです。
では、現在の言語プロジェクションはどのようにそれを行うのでしょうか? みてみましょう。CLR にはプロジェクションがあり、C# などのマネージ言語で記述した Metro アプリに読み込まれます。c:\windows\microsoft.net\framework\v4.0.30319\clr.dll で dumpbin.exe /imports を実行すると、Windows DLL の依存関係のかなり大きなリストが生成されます。そのダンプからのスニペット:
Dump of file clr.dll
File Type: DLL
Section contains the following imports:
KERNEL32.dll
...
430 RaiseException
581 VirtualAlloc
584 VirtualFree
589 VirtualQuery
587 VirtualProtect <=== here!
339 HeapDestroy
336 HeapAlloc
342 HeapValidate
540 SleepEx
547 SwitchToThread
... etc
もう 1 つの言語プロジェクションは、「チャクラ」エンジンに実装されている JavaScript 用です。そのエンジンを実装している DLL を正確に把握するのは困難です。それは単なるコード名です。アンマネージ デバッグを有効にしてサンプル Javascript プロジェクトを実行すると、「jscript9.dll」が読み込まれていることがわかります。これで dumpbin.exe /imports を実行しましょう:
....
6898F4D5 10D DebugBreak
6891FDA1 55E TerminateProcess
6898EF9E 57E UnhandledExceptionFilter
6891FD58 43C RaiseException
68903BB7 59E VirtualProtect <=== here!
6A218590 366 InterlockedPushEntrySList
6A2185A9 365 InterlockedPopEntrySList
6A2195AA 35C InitializeSListHead
689026F9 598 VirtualAlloc
68902852 59B VirtualFree
6890603E 4A2 ResetWriteWatch
...etc
まあ、それはそこにあります。そうでなければならないでしょう。問題は、現在、この関数を呼び出すことができないことです。それは確かに Store バリデーターからの精査に合格することはありません.
これは、少なくとも ARM コアで実行される実際のWinRT が利用可能になるまで煮込む必要があります。Windows 8 Consumer Preview で現在実行している Win32 上で実行されるものだけではありません。また、トリミングされたリストだけでなく、既存の winapi 関数を簡単に利用できます。それはおそらく年末頃になるでしょう。実際のハードウェアは、来年の夏まで手に入りません。