Unicode нечувствительный к регистру
берем буфер с некими данными, считаем эти данные Unicode-символами. Делаем CharUpperBuff() для копии этого буфера. Затем делаем CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, ...) для двух этих буферов. Результат - не равны. Выявлено спотыкание на, например такой паре: 0x283 в оригинале и 0x1A9 после Upper. Собственно вопрос: кто знает что не так или почему так происходит? LOCALE_SYSTEM_DEFAULT пробовал с тем же результатом. Если символ не допустимый юникод - CharUpperBuff() должна его не трогать вообще..
Попробуй буферу и его копии сделать CharLowerBuff и сравнить их.Наверняка результаты будут неожиданными:)
Если и буферу и его копии сделать одно преобразование, сравнение, яное дело, идет на ура. Данные-то, бинарно одинаковы получаются.
ПыСы. Пробовал LOCALE_NEUTRAL, LOCALE_INVARIANT - с тем же результатом...