1

私は奇妙な問題で少し立ち往生しています。サードパーティの Active-X タイプライブラリを介して一部のハードウェアを制御する必要があります。私のプログラムは C# で書かれています。問題は、1 つの API/COM 呼び出しで PVariant への参照が必要であることです。そのため、Variant へのポインターを正しく取得した場合。さらに悪いことに、これは、サイズ (要素数) が固定されていない Varaint 配列の最初のアドレスにすぎません。

問題は、これがベストプラクティスではないことに加えて、その方法を変更する機会がなく、回避する方法がないことです。

COM 互換のバリアント配列を作成し、その開始アドレスを COM メソッドに渡す必要があった人はいますか? それはどのように行われますか?

これについて何か助けていただければ幸いです!

高度なThx

コーレルゴット

4

1 に答える 1

0

System.Runtime.InteropServices.Marshal.GetNativeVariantForObjectを使用してみましたか?

また、記憶をたどってみると、Variant Array (VT_ARRAY) は実際には別の名前の SAFEARRAY です。を渡して、Object[].Net のデフォルトのマーシャリングで処理されるかどうかを確認できます。

于 2010-10-14T06:49:05.853 に答える