Подскажите пожалуйста новичку как правильно преобразовать массив байт в структуру
Есть структура в C#
internal struct myStruct
{
internal ushort Alpha;
internal string Beta;
}
Преобразую структуру в массив байт и передаю ее драйверу с помощью IOCTL
IntPtr pStructure = Marshal.AllocHGlobal(256);
byte[] inBuffer = new byte[Marshal.SizeOf(ipRule)];
Marshal.StructureToPtr(ipRule, pStructure, false);
Marshal.Copy(pStructure, inBuffer, 0, inBuffer.Length);
returnString = Driver.CommunicateWithDriver(Driver.ioctlMyStruct(), inBuffer);
internal void CommunicateWithDriver
(
uint IoControlCode,
byte[] Buffer
)
{
int result = 0;
int returned = 0;
byte[] ReturnBuffer = new byte[256];
unsafe
{
fixed (byte* pBuffer = Buffer)
{
fixed (byte* pReturnBuffer = ReturnBuffer)
{
result = DeviceIoControl
(
DriverHandle,
IoControlCode,
pBuffer,
Buffer.Length,
pReturnBuffer,
ReturnBuffer.Length,
ref returned,
0
);
}
}
}
}
В драйвере на СИ обьявляю структуру:
typedef struct _MYSTRUCT
{
USHORT Alpha;
UCHAR *Beta;
} MYSTRUCT, *MYSTRUCT;
Подскажите пожалуйста как мне получить струтуру MYSTRUCT из inBuffer
UCHAR *inBuffer;
case IOCTL_MYSTRUCT:
{
inBuffer = Irp->AssociatedIrp.SystemBuffer;
outBuffer = Irp->AssociatedIrp.SystemBuffer;
// ???? ЧТО ЗДЕСЬ ПИСАТЬ ЧТОБЫ ПОЛУЧИТЬ СТРУКТУРУ MYSTRUCT ИЗ inBuffer
break;
}