7

C または C++ から WinRT オブジェクトへの動的な (つまり、リフレクション ベースの) 呼び出しを行いたいと考えています。実行時に使用可能な winmd ファイルがあると仮定して、メソッドが何であるか、およびメソッドが取るパラメーターを確認できるようにします。

OLE オートメーションでは、IDispatch を使用して実際の呼び出しを行うことができました。ただし、WinRT オブジェクトは IDispatch をサポートしていません。どうすれば電話をかけることができますか?プロセッサの COM 呼び出し規則に従って、パラメータを動的に渡すことができる FFI ライブラリが必要ですか? または、「静的な」クラス/構造体宣言 (C/C++ 用) が本当に必要ですか?

編集: ターゲット システムは、メトロ スタイルのアプリです。これにより、禁止された API を含むソリューションが排除されます。

4

1 に答える 1

2

あなたが説明しているものを構築することは確かに可能です - それはまさに Chakra Javascript エンジンが winrt メタデータで行うことであり、CLR が行うことと似ています。これらの言語プロジェクションは両方とも、実行時に API を検出し、これを実現するための低レベル アセンブリを構築します。

それは大変な作業で特に楽しいものではありませんが、技術的には絶対に可能です。Windows メタデータには、API と構造のスタブを作成するために必要なすべての情報が含まれています。

于 2012-05-06T01:53:41.740 に答える