UCHAR或WCHAR用于通信缓冲区

时间:2014-06-17 16:23:14

标签: c++ c buffer

我有一个缓冲区:

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

用于在驱动程序和用户模式应用程序之间进行通信(传递参数,如ulong)。我用它作为UCHAR类型。但是现在我想用这个缓冲区发送宽字符,我应该改变它的类型 到WCHAR还是PCHAR?

这里哪种数据类型更好?

2 个答案:

答案 0 :(得分: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 :(得分:1)

为什么不使用字节数组? BYTE*?另外,如果我没记错的话,你可以将void *传递给驱动程序并将其作为结构读取。