DllImport и хитрая структура - C#
Формулировка задачи:
Подключаю в C# обычную Си-шную DLL. Встретилась функция, которая принимает на вход структуру такого вида:
Как сформировать такую структуру в C# для вызова этой функции?
typedef struct _WIN32_COMMAND { union { ULONG mFunction; NTSTATUS mStatus; }; ULONG mLength; union { mUSB_SETUP_PKT mSetupPkt; UCHAR mBuffer[ LENGTH ]; }; } mWIN32_COMMAND, *mPWIN32_COMMAND; typedef struct _USB_SETUP_PKT { UCHAR mUspReqType; UCHAR mUspRequest; union { struct { UCHAR mUspValueLow; UCHAR mUspValueHigh; }; USHORT mUspValue; }; union { struct { UCHAR mUspIndexLow; UCHAR mUspIndexHigh; }; USHORT mUspIndex; }; USHORT mLength; } mUSB_SETUP_PKT, *mPUSB_SETUP_PKT; ULONG WINAPI DriverCommand( ULONG iIndex, mPWIN32_COMMAND ioCommand );
Решение задачи: «DllImport и хитрая структура»
textual
Листинг программы
[StructLayout(LayoutKind.Explicit, Size=размер)] struct _WIN32_COMMAND { [FieldOffset(0)] public uint mFunction; [FieldOffset(0)] public uint mStatus; [FieldOffset(4)] public uint mLength; [FieldOffset(8)] mUSB_SETUP_PKT mSetupPkt; [FieldOffset(8), MarshalAs(UnmanagedType.ByValArray, SizeConst = LENGTH)] public byte[] mBuffer; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д