1)
[StructLayout(LayoutKind.Sequential)]
struct DEV_BROADCAST_DEVICEINTERFACE
{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
public Guid dbcc_classguid;
public char dbcc_name;
public static readonly int Size = Marshal.SizeOf(typeof(DEV_BROADCAST_DEVICEINTERFACE));
}
2)
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct DEV_BROADCAST_DEVICEINTERFACE
{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
public Guid dbcc_classguid;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=255)]
public string dbcc_name;
}
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Public Structure DEV_BROADCAST_DEVICEINTERFACE
Public dbcc_size As UInteger
Public dbcc_devicetype As UInteger
Public dbcc_reserved As UInteger
Public dbcc_classguid As GUID
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> Public dbcc_name As String
End Structure
None.
If you need to read the dbcc_name, start reading as a buffer at "dbcc_name" address until you get a '\0' character.