Есть юзермодная функция setlocale из msvcr100.dll. Пытаюсь найти нечто подобное, но для r0, гуглил - ничего такого нет. Посмотрел setlocale в дизассемблере, но не увидел, чтобы она ссылалась на какую нибудь системную функцию. И не особо понял как оно работает. Подскажите, как можно изменить локаль в ядре?
нет это нужно для функции RtlUnicodeStringToAnsiString. Проблема в том, что в китайской/арабской/хз винде если переводить строку из юникуд в анси, и при этом юникодавая строка будет иметь русские символы, то функция RtlUnicodeStringToAnsiString заменит их на "?????". А нужно, несмотря ни на что конвертировать строку из юникод в анси.
Proj From MSDN Вообщем так делать не хорошо, как варинат юзать С рантайм, но в целом что то вы делаете не так.(( Ну архитектурно(или дизайнерски)
Да. Но в общем-то остальные языки меня не интересуют. Если локаль не поддерживает 1251, её бы следует установить и можно смело конвертить не боясь потерять символы. Но как это сделать из ядра, хз. Ещё как вариант конечно использовать свой аналог RtlUnicodeStringToAnsiString. Вообще конечно интересно как с этим правильно бороться
qqwe В 4 секторе кириллицы никогда не было ) с чего вы взяли? Вопрос найти на диске кириллицу - довольно таки непростой. Может подскажете метод поиска?
запросто http://www.unicode.org/charts/ для кир - http://www.unicode.org/charts/PDF/U0400.pdf . таки да, в 4-м (интересно, на http://unicode.org/cldr/apps/survey для языка Russian указаны Moldova, Russia, Ukraine. а для других быв ссср? ну за исключением грузии и эстонии, которые все понимают, но не говорят)
qqwe Откройте винхекс хотя бы да и гляньте, что там по смещению на диске в 4ом секторе. И кстати - почему 4ый? если размер сектора 0х200 (по умолчанию) то это будет 3тий сектор. Если вы имеете ввиду память, то тоже не в ту степь. Если же вы имеете ввиду "сектора юникода", то где в винде лежать начало секторов юникода? Мыж тут винду обсуждаем.
TermoSINteZ гм, вы счас под клерка пародируете? у меня немного не очень хорошо с пониманием юмора. если под клерка, то в пост надо добавить секции про дураков, аверов, скрипты и смотреть не юзермодным винхексом, а высокоуровневым масмом и только с кернел уровня.
qqwe Вообще то, я никого не пародирую. А серьезно спрашиваю, как вы собрались получать юникод таблицу из кернела. Расскажите, раз предложили решение.
shchetinin Тоже верно. Но обычно пляшут от постановки задачи из серии "нужно" ) А потом думают ))) а нужно ли.
у вас строка есть? таблицы по адресам выше. берете очередной символ типа wchar_t (в выни short, 16 бит), смотрите его старший байт (я его назвал сектор, но может оно зовется и по другому. область?). если 0x0, то ascii + что там из немецкой и французской латинницы. если 0x4, то кириллица. прямцю ссыль на таблицу привел выше. если другая цифра, то другое. рамки там, или стрелочки. структура уникода не так сложна - смотрите в вике или на сайте юникода область (сектор, раздел, коробочку, как-удобно-так-и-называйте-себе) и по табице с того же сайта юникода перекодируйте во что хотите.
qqwe Конкретнее тут пожалуйсто, какие именно адреса. Если вы про адреса , что в доке. Там ничего. Скрин сделать ?
TermoSINteZ фух. вы выпимши или ищете повода меня забанить? хотите забанить - воля ваша. баны на форумах, обычно, положительно сказываются на работе.