我有一个缓冲区:
typedef struct _MESSAGE {
UCHAR Data[];
} MESSAGE, *PMESSAGE;
用于在驱动程序和用户模式应用程序之间进行通信(传递参数,如ulong)。我用它作为UCHAR类型。但是现在我想用这个缓冲区发送宽字符,我应该改变它的类型 到WCHAR还是PCHAR?
这里哪种数据类型更好?
答案 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 *传递给驱动程序并将其作为结构读取。