私はVisual Studioアドインを作成しており、管理されているCodeElementsオブジェクトをアンマネージ形式にマーシャリングする必要があります。私はそれをキャストして、管理されていない側のCodeElementのように扱うことができるので、ポインタをメモリに必要とするだけです。C#でIntPtrにCodeElementsをマーシャリングする
[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オブジェクトへのポインタに変換する方法を知る必要があります。
ありがとうございました。
DTBが答えに近いようだが、していないようですポインタを正しくマーシャリングします。オブジェクト参照がオブジェクトのインスタンスまたは保護されたメモリエラーに設定されていない場合でも、マーシャリングで何かを変更する必要があります。 – user142350