ToUnicode вызывает ToUnicodeEx? И что ToUnicodeEx меняет в потоке пространства ядра?

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?

3

Решение

ToUnicode а также ToUnicodeEx оба обертки вокруг NtUserToUnicodeEx и да, единственная разница заключается в конечном параметре, который равен NULL для ToUnicode и предоставлены пользователем для ToUnicodeEx,

Поскольку мертвые клавиши используются для генерации символов из нескольких отдельных нажатий клавиш, ОС должна хранить историю, в которой ранее были нажаты мертвые клавиши. Я думаю, что вся эта записка предупреждает вас, что ToUnicodeEx а также TranslateMessage оба используют одну и ту же историю — поэтому смешивание вызовов двух функций может привести к ненадежным результатам.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]