Подскажите пожалуйста новичку как правильно преобразовать массив байт в структуру
Есть структура в 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;
}
Здравствуйте, Аноним, Вы писали:
А>А>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;
А>}
А>
MYSTRUCT *structPtr;
...
structPtr=(MYSTRUCT *)inBuffer;
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Cyberax, Вы писали:
А>Огромное спасибо!!! Весь форум облазил не нашел ответа!!!
Для "спасибо" туи есть ещё и кнопочки

Можешь попробовать поставить отвкту Цайберакса оценку
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Cyberax, Вы писали:
А>>Огромное спасибо!!! Весь форум облазил не нашел ответа!!!
E>Для "спасибо" туи есть ещё и кнопочки
E>Можешь попробовать поставить отвкту Цайберакса оценку
Оценку поставил