В C # 4.0, скажем, у меня есть
List<HSZPAIR> myList
с тремя элементами , где структура HSZPAIR определяется как:
[StructLayout(LayoutKind.Sequential)]
public struct HSZPAIR
{
public IntPtr hszSvc;
public IntPtr hszTopic;
}
Как создать байтовый массив для всего myList? В C ++ вы можете просто преобразовать массив структур в байтовый массив. Я не уверен, как это сделать в C #.
Я использую старую функцию Windows API в библиотеке DDEML, для которой в качестве аргументов требуется массив байтов и количество элементов в массиве. Если вас интересует дополнительная информация, функция API:
[DllImport("user32.dll", EntryPoint="DdeCreateDataHandle", CharSet=CharSet.Ansi)]
public static extern IntPtr DdeCreateDataHandle(int idInst, byte[] pSrc, int cb, int cbOff, IntPtr hszItem, int wFmt, int afCmd);
Вот документация по MSDN . Аргумент pSrc - это байтовый массив структур HSZPAIR. Размер массива - это аргумент cb.