|
分類:[.NET 全般]
質問失礼します。 VB2005でポインタから構造体配列を取得することができず、困っています。 使用言語はVB2005、VC++2008,OSはWindows7です。
VC++で作成したDLLからコールバックされる関数の引数に構造体配列のポインタが 指定されており、その構造体配列をVB2005側で取得したいのですがうまくいきません。 marshal.copyでは構造体は扱えず、 marshal.ptrToStructでは配列の先頭の構造体しか取得できませんでした。 VC++側で構造体配列は連続的に配置されています。
以下、コードです。
’構造体の宣言 <StructLayout(LayoutKind.Sequential, Pack:=1)> _ Public Structure glbImage <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1024)> Dim filePath As String Dim saveCount As Integer Dim Result As Integer End Structure
'コールバック関数 Public Function CallBack(ByVal pImages As IntPtr,ByVal FileNum as Integer) As UInt32
Dim rvImages As glbImage Dim rvImagesArray(FileNum - 1) As glbImage
'配列の先頭の構造体のみ取得可能 rvImages = Marshal.PtrToStructure(pImages, rvImages.GetType) '取得できず rvImagesArray = Marshal.PtrToStructure(pImages, rvImages.GetType)
End Function
何かご存知の方いらっしゃいましたらご教授ください。
|