WinApi - ToUnicode函数是否会引发访问冲突?

时间:2017-09-20 03:32:03

标签: c++ winapi

LPWSTR data[256];
ToUnicode(vk_code, 0, 0, *data, 256, 0);

此代码抛出以下异常:

Access violation writing location 0xCCCCCCCC.

vk_code值似乎在断点处完全正常,我用msdn检查以确保我的参数有效。我能做错什么?

1 个答案:

答案 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;
}