LPWSTR data[256];
ToUnicode(vk_code, 0, 0, *data, 256, 0);
此代码抛出以下异常:
Access violation writing location 0xCCCCCCCC.
vk_code
值似乎在断点处完全正常,我用msdn检查以确保我的参数有效。我能做错什么?
答案 0 :(得分:1)
您正在将一个未经启动的指针传递给pwszBuff
参数。它需要一个指向已分配字符数组的指针。更改数组以使用WCHAR
元素而不是LPWSTR
元素,并删除*
解引用运算符:
WCHAR data[256];
int res = ToUnicode(vk_code, 0, 0, data, 256, 0);
switch (res) {
case -1:
// dead-key character, nothing written to data[]...
break;
case 0:
// no translation, nothing written to data[]...
break;
default:
// res # of characters written to data[]...
break;
}