UCHAR或WCHAR用于通信缓冲区

UCHAR or WCHAR for communication buffer

本文关键字:通信 缓冲区 用于 WCHAR UCHAR      更新时间:2023-10-16

我有一个缓冲区:

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

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

什么数据类型在这里是更好的套件?

您不需要更改数据类型,它是一个通用字节(原始数据流类型)。

    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!

为什么不使用字节数组呢?BYTE*吗?如果我没记错的话,您还可以将void*传递给驱动程序,并在那里将其作为结构体读取。