Marshaling структуры
От: Аноним  
Дата: 09.09.05 08:53
Оценка:
Есть динамическая библиотека — не Com. Для типов в .VB .Net приложении созданы соответствующие
managed структуры

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> Public Structure AAAA
'name
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=33)> Public name() As Char
'company name
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=33)> Public company() As Char
'notional open date
End Structure


Public Structure BBBB
'elements count in data array
Public Count As Integer
'data array pointer
'pointer to AAAA[]
'problem field
Public P As IntPtr '?
End Structure

''''''''''''''''''''''''''''''
В коде —
Dim data As IntPtr
' data initialization
Dim bbbb As BBBB
bbbb = Marshal.PtrToStructure(data, bbbb.GetType())

Dim aaaa() As AAAA
aaaa = Marshal.PtrToStructure(bbbb.P, aaaa.GetType())

Такой код не работает. Так как не получается привести указатель на С-массив к managed массиву..
в этом случае получается только привести указатель на первый элемент массива..

То есть меня интересует как можно передавать структуры которые содержат в качестве своих полей
указатели на массивы переменной длины..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.