HNKTO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору А ещё раз, подробней? Интересно бы более подробно твои мнения. В ЯДРЕ 98й операции с файловыми путями идут в UNICODE? Цитата: В документации ничего подобного не видел. Разве что система это по первому вызову GetCommandLine() | Может и ты прав. Не исследовал этот момент досконально. Да и познания сей области недостаточны. У СИ компилятора для компиляции в т. ч. есть "флаги" "_CONSOLE" и "UNICODE". Первое определяет консольное ли это приложение, и скорей всего таки рулит каким-то битом в PE заголовке ибо тот-же depends.exe сей момент как-то отличает. Второе - юникодность программы, да, можно сказать формальная (с точки зрения исходников отвечает только за транслируемость макросов в вызовы A/W функций при компиляции), НО, если для 9х и Linux пофиг, в случае с WinNTшками если для компилятора небыло "UNICODE" - ручной вызов Wфункций даёт, оно-то юникод, но пропущенный через ANSI преобразование и обратно, обрезанный, + часть АПИ вообще не работает. И вот тут, может ты прав, ОСь определяет своё поведение по первому вызову какого-нить GetCommandLineA() вставляемому стандартной преамбулой к main() компилятором. Я незнаю где и как это реализовано, но эффект налицо. Можно компильнуть без "UNICODE" и вот, пусть в той-же 10ке, руками вызывая юникодные версии АПИ ты никак не можешь правильно получить к примеру текст из эдитбокса содержащий символы отсутствующие в ANSI текущей локали. Цитата: Оно-то винда, тем более уж историческим именем, но, на мой взор, если сейчас принять за "Винда" Win10, то Win98 не имеющая никакого отношения к WinNTлинейке окромя фирмы-разработчика что? Но да, не спорю, сверстал криво и непонятно. +++ Цитата: C KernelEx (А может и просто MSLU) - работает. Но я не о том уже. но я не о том уже. Я как-то всегда считал что в ядре Win9x в операциях с файлами UNICODE кончается где-то уже на уровне драйвера ФС, а далее судя по всему ANSI т. к. файлы с именами с символами которых нет в OEM открыть можно. А вот в WindоwsNT ядро работает в UNICODE. Но та-же если не ошибаюсь CreateProcessW() (но что-то точно помню из этой области) НЕ работает если программа была скомпилирована без флага "UNICODE" компилятору. (причём именно об этой точке что-то такое припоминаю - вообще в принципе не работает, не запустить ЕХЕшник там с иероглифами на русской локали, а вообще что либо, пусть (для точного определения) с именем отвечающим семибитной ASCII кодировке) | Всего записей: 2088 | Зарегистр. 30-01-2010 | Отправлено: 16:50 25-09-2021 | Исправлено: HNKTO, 17:09 25-09-2021 |
|