- PR -

構造体を含む構造体のCopyMemoryについて

1
投稿者投稿内容
mura
会議室デビュー日: 2003/08/13
投稿数: 9
投稿日時: 2006-06-21 10:16
構造体を含む構造体をCopyMemoryする方法をご教示願います。

======構造体の宣言部=====
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi), Serializable()> Public Structure GRP_A
<VBFixedArray(96 - 1), MarshalAs(UnmanagedType.ByValArray, SizeConst:=96)> Dim a_data() As Byte

Public Sub Initialize()
ReDim a_data(96 - 1)
End Sub
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi), Serializable()> Public Structure TBL_A
<VBFixedArray(20 - 1), MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> Dim grp() As GRP_A

Public Sub Initialize()
ReDim grp(20 - 1)
Dim i As Integer
For i = 0 To 20 - 1
grp(i).Initialize()
Next
End Sub
End Structure
========================

======ボタンクリックで書き込みを行う======
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim res As Integer
Dim a As TBL_A

a.Initialize()

res = 書き込み関数(メモリ名称, オフセット, サイズ, a)

End Sub
==========================================
Public Function 書き込み関数(ByVal メモリ名称 As String, ByVal オフセット As Integer, ByVal サイズ As Integer, ByRef pBuf As TBL_A) As Integer

OpenFileMapping
MapViewOfFile
CopyMemory(ファイルがマップされたビューの開始アドレス + オフセット, pBuf, サイズ) <-エラーが発生します
UnmapViewOfFile
End Function
===========================================
エラーメッセージ内容:
型 TBL_Aのフィールドgrpをマーシャリングできません。
この型は構造体フィールドとして、マーシャリングできません。

同様の方法で、構造体を含まない構造体の場合はうまくいっています。
1

スキルアップ/キャリアアップ(JOB@IT)