SAFEARRAY から要素数の取得ができない


なかむら  2004-11-26 00:08:52  No: 55350

VC#.NET で作成したCOMを VC++ のプログラムから呼び出して使用しています。
COM の API で2次元配列を返す場合に、配列の要素数が正常に取得できずに困っています。

現在のコードは以下のように記述しています。

VC++
------------------------------------------------------

    SAFEARRAY *psa_return_array = NULL ;

    com->get_array( &psa_return_array ) ;
    
    unsigned short dim_count = psa_return_array->cDims ;
    unsigned short element_count = psa_return_array->cbElements ;

------------------------------------------------------

VC#.NET
------------------------------------------------------

    public void get_array(
        out string[,] ret_array )
    {
          :
        ret_array = new string[10, 2] ;

        return ;
    }
------------------------------------------------------

psa_return_array->cDims は正常に取れているようなのですが、
psa_return_array->cbElements とすると、実際に COM 側で作成した配列数と
異なる値が取得できてしまいます。

何が原因なのかさっぱりわからずに困り果てています。
どなたかよいアドバイスをいただけませんでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加