DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ocxへのInteger配列データの取得

  • 題名: ocxへのInteger配列データの取得
  • 著者: つと
  • 日時: 2007/09/04 23:29:12
  • ID: 20407
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[WinXP/VB2005, VC++6.0]
分類:[.NET]

2007/09/04(Tue) 23:30:19 編集(投稿者)

質問をさせて頂きます。

「VB2005」を使用して「VC++6.0」で作成されたocxの関数とやり取りをしています。
引数にInteger型の配列を渡して結果を取得する仕様ですが、Integer配列の先頭を渡すと配列の1番目のみしかデータが格納されません。

Dim buf(9) As Integer

Test(buf(0)) ←先頭しか格納されない

そのため、マーシャルクラスを使用して固定メモリを渡しましたが、結果を配列にcopyする時に「保護されているメモリへのアクセス…エラー(System.AccessViolationException)」となってしまいます。

VC++6.0
void Test(long* data) //10個の計測結果が引数に格納されます

VB2005
Dim buf(9) As Integer
Dim ptr As IntPtr = Marshal.AllocHGlobal(buf.Length*4)

Test(ptr)

Marshal.Copy(ptr, buf, 0, buf.Length) ←ここでエラー

Mashal.Copyの場合は第4引数が0以外をアクセスするとエラーになります。


何が問題なのがご教授願いますでしょうか?
よろしくお願いします

DOBON.NET | プログラミング道 | プログラミング掲示板