массив байт в структуру
От: Аноним  
Дата: 07.07.07 10:18
Оценка:
Подскажите пожалуйста новичку как правильно преобразовать массив байт в структуру

Есть структура в 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.