C++:ToUnicode函数(windows)上的SIGSEGV
C++: SIGSEGV on ToUnicode function (windows)
首先,请原谅我英语不好;)
我想使用窗口函数ToUnicode(http://msdn.microsoft.com/en-us/library/windows/desktop/ms646320(v=vs.85).aspx)使用C++将虚拟密钥代码转换为unicode字符
但每次我调用该函数时,Windows7都会说"MyProcess funktioniert nicht mehr"-我不知道英文的等价物,也许是"MyProcess不再工作了"?!-我可以选择调试MyProcess或关闭。
然而,我的gdb调试器显示我得到了一个SIGSEGV,它告诉我认为存在数据访问违规。
这是我使用的代码:
BYTE kbd[256];
GetKeyboardState(kbd);
UINT vk = 65; //vitual key represents 'a'
UINT sc = 30; //scan code represents 'a'
LPWSTR chars;
ToUnicode(vk,sc,kbd,chars,2,0);
我甚至尝试了ToAscii函数,但我得到了相同的错误:SIGSEGV
你能帮帮我吗
ToUnicode需要一个缓冲区,可以将翻译结果写入其中。
你给它一个指向内存中某个地方(随机)的统一指针——这就是segfault的来源,ToUnicode试图写入不属于你的进程的内存。
有关此功能的正确使用,请参阅以下示例
//Just a snippet showing the initialization the buffer part
const int BUFFER_LENGTH = 2; //Length of the buffer
WCHAR chars[BUFFER_LENGTH];
ToUnicode(vk,sc,kbd,chars,BUFFER_LENGTH,0);
相关文章:
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 物理键盘上的触发器按键
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 集合上的输出迭代器:assign和increment迭代器
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 对于set上的循环-获取next元素迭代器
- 我的代码上的运行时错误 sigsegv
- std::华为JNI上的SIGSEGV异常
- SIGSEGV 在堆上的巨大数组上(我想是的)
- 引发异常导致OSX 10.11.4+clang上的SIGSEGV
- C++:ToUnicode函数(windows)上的SIGSEGV
- SPOJ上简单动态编程中的SIGSEGV错误
- Android上的简单boost::spirit语法SIGSEGV
- 类析构函数上的SIGSEGV
- Android c++上的Qt与Java的互操作性在SIGSEGV为void或基本返回类型时失败