J'ai un petit pb de marshaling sous vb.net. J'utilise l'api DeviceIoControl pour récuperer un certain nombre d'information, mais je n'arrive pas à formater correctement la structure.
En effet lorsque je déclare mes structures sous cette forme :
<StructLayout(LayoutKind.Sequential)>
Private Structure GET_MEDIA_TYPES
Public DeviceType As Int32
Public MediaInfoCount As Int32
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=320)>
Public MediaInfo As Int32()
End Structureaucun pb si par exemple je veux récup la taille de la structure en faisant :
Dim
ptrMediaType As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(GET_MEDIA_TYPES)))Le pb c'est que j'aimerai avoir plutot un truc comme ca :
<StructLayout(LayoutKind.Sequential, Size:=32)>
Private Structure DEVICE_MEDIA_INFO
Public Cylinders As UInt64
Public MediaType As Int32
Public TracksPerCylinder As Int32
Public SectorsPerTrack As Int32
Public BytesPerSector As Int32
Public NumberMediaSides As Int32
Public MediaCharacteristics As Int32
End Structure
<StructLayout(LayoutKind.Sequential)>
Private Structure GET_MEDIA_TYPES
Public DeviceType As Int32
Public MediaInfoCount As Int32
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)>
Public MediaInfo As DEVICE_MEDIA_INFO()
End StructureEt là message d'erreur : Impossible de définir la taille de la structure........
Comment faire ???????
Bidoch78