ToUnicode会调用ToUnicodeEx吗?ToUnicodeEx在内核空间线程上有什么变化?

Chr*_*ris 3 c++ windows unicode keyboard-hook

ToUnicodeEx:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646322( v = vs.85) .aspx

ToUnicode:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646320( v = vs.85) .aspx

似乎两者之间的唯一区别是ToUnicodeEx允许传递输入语言环境标识符参数,因为ToUnicode没有.我的问题是:ToUnicode本身是否会调用ToUnicodeEx?

此外,在ToUnicodeEx msdn页面的底部,在备注部分中,我们看到:当ToUnicodeEx转换虚拟键代码时,它还会更改内核模式键盘缓冲区的状态.此状态更改会影响死键,连字,alt + numpad键输入等.如果与TranslateMessage(也改变内核模式键盘缓冲区的状态)一起使用,它也可能导致不希望的副作用.

有谁知道它正在做什么内核模式kb缓冲区?

Jon*_*ter 6

ToUnicode并且ToUnicodeEx都是包装器NtUserToUnicodeEx,是的,唯一的区别是最终参数是NULL ToUnicode和用户提供的ToUnicodeEx.

因为死键用于从多个单独的按键生成字符,所以操作系统必须保留先前按下哪些死键的历史记录.我认为所有这些注意事项都警告你,ToUnicodeEx并且TranslateMessage两者都使用相同的历史 - 因此混合调用这两个函数可能会产生不可靠的结果.