UCHAR или WCHAR для буфера связи

0

У меня есть буфер:

typedef struct _MESSAGE {
    UCHAR Data[];
} MESSAGE, *PMESSAGE;

Это используется для связи (для передачи параметров, например ulong) между приложением драйвера и режима пользователя. Я использовал его как тип UCHAR. Но теперь я хочу также отправить широкие символы с этим буфером, должен ли я изменить его тип на WCHAR или PCHAR?

Какой тип данных лучше подходит здесь?

  • 0
    Вы программируете в Windows?
  • 0
    @AngeloDM - окна
Теги:
buffer

2 ответа

2
Лучший ответ

Вам не нужно изменять тип данных, это общий байт (тип необработанного потока данных). Попробуйте это:

    typedef struct _MESSAGE {
    UCHAR Data[200];
} MESSAGE_T, *PMESSAGE_T;

int byte_offset = 0;    // byte offset inside your data stream

wchar_t MyMessage1[] = L"Ciao Mondo";
wchar_t MyMessage2[100];

MESSAGE_T Message;

// write message1 in the data stream
wcscpy( (wchar_t*)&Message.Data[byte_offset], MyMessage1);

// read message from the data stream
wcscpy( MyMessage2, (wchar_t*)&Message.Data[byte_offset]);

// TESTED AND WORK!
1

Почему бы вам не использовать массив байтов? BYTE*? Кроме того, если я правильно помню, вы могли бы передать void * в драйвер и прочитать его как структуру.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню