|
分類:[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型を含む構造体の先頭アドレスを取得する良い方法が あれば教えていただけないでしょうか
宜しくお願い致します。
|