Visual Studioアドインを作成していますが、管理対象のCodeElementsオブジェクトを管理されていない形式にマーシャリングする必要があります。ポインタをキャストして、アンマネージ側のCodeElementのように扱うことができるので、メモリ内にポインタが必要です。
[DllImport("CodeMethodsToString.dll")]
private static extern BSTR* CodeMethodsToString(void* functionObject);
public static void CodeMethodsToXML(XmlElement parent, CodeElements elements)
{
//Call CodeMethodsToString: how do I marshall CodeElements to an IntPtr?
//set XmlElement in here
}
私はXMLの扱い方を知っており、C#でこれの作業バージョンを持っています。再帰の最低レベルでさまざまなメンバー変数をすべて呼び出すと、プログラムの速度が低下するため、アンマネージDLLを作成しました。System.Runtime.Interop.Marshalを使用して、CodeElementsオブジェクトをメモリ内のCOMオブジェクトへのポインターに変換する方法を知る必要があります。
ありがとう。