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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д