C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

構造体のアドレスを取得方法


(過去ログ 1 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■432 / inTopicNo.1)  構造体のアドレスを取得方法
  
□投稿者/ Ash 一等兵(6回)-(2005/05/20(Fri) 13:55:11)

分類:[VB.NET] 


分類:[VB.NET] 

こんにちは Ashです。

VC++6.0(以下VC)で作成したOCXをVB.NET2003(以下VB)で使用してますが、
VC−VB間でデータのやり取りに構造体のアドレスを渡そうと
思っています。
VC側では従来通り構造体の先頭アドレスが渡ってくるものとして、
それ以降の処理を記述していますが、VB側で渡す構造体の先頭アドレス
の取得方法に悩んでいます。


構造体の中身が全てblittable型だと以下の方法でうまくいきます。

sample   :中身が全てblittable型の構造体
SampleOCX :VCで作成したOCX
A     :SampleOCXのメソッド、引数に構造体の先頭アドレスを渡す

Dim hGc As GCHandle = GCHandle.Alloc(sample, GCHandleType.Pinned)
Dim iAddr As Integer = hGc.AddrOfPinnedObject().ToInt32()

Call SampleOCX.A(iAddr)

hGc.Free()

しかし、非blittable型を含む構造体だとMSDNライブラリにも載っているように
エラーが発生して先頭アドレスを取得できません。


非blittable型を含む構造体の先頭アドレスを取得する良い方法が
あれば教えていただけないでしょうか

宜しくお願い致します。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -