90 выпуск новостей проекта ReactOS
Доступен перевод 90 выпуска новостей проекта ReactOS, операционной системы с открытым исходным кодом, нацеленной на обеспечение совместимости с программами и драйверами Microsoft Windows семейства NT (XP/2003).Беспроводные сети
Кэмерон Гутман (Cameron Gutman) в течение почти всего прошедшего месяца был занят разработкой компонентов, необходимых для поддержки беспроводных сетевых карт в ReactOS. Значительная часть работы заключалась в написании драйвера протокола NDIS (ndisuio), поддерживающего передачу сообщений идентификатора объекта (OID) NDIS. Эти сообщения предназначены для опроса состояния и получения информации о возможностях сетевых драйверов, а также для установки режима приёма, в котором должно функционировать устройство. Помимо кода в режиме ядра, необходима утилита пользовательского режима, позволяющая конечным пользователям совершать эти запросы.
На текущий момент в состав ReactOS включена утилита wlanconf, поддерживающая привязку сетевых адаптеров к ndisuio. Кроме всего этого, была проведена работа над службой DHCP, связанная с быстрым завершением запросов на освобождение и обновление IP-адресов, а также драйвером TCP/IP, что позволит убедиться в правильности используемых сообщений OID при проверке состояния сетевого устройства. В связи с приближающимся выпуском релиза версии 0.3.14, Кэмерон добавил результаты своих трудов в кодовую базу проекта, и теперь свежие сборки ReactOS могут подключаться к отрытым беспроводным сетям, а также к беспроводным сетям, использующим шифрование WEP, что показывает, что драйвер сети функционирует корректно. Сети с более надежными видами шифрования, такими, как WPA и WPA2, требуют от операционной системы обеспечения более сложного процесса установления связи, но этой функциональности в ReactOS пока нет. Однако, текущее состояние поддержки беспроводных сетей представляет собой большой шаг вперёд в плане обеспечения пригодности работы ReactOS на современном оборудовании.
Состояние поддержки USB
Иоханнес Андервальд (Johannes Anderwald) недавно провёл большую работу над стеком USB, которую он начал совместно с Михаэлем Мартином (Michael Martin), и завершил разработку двух из четырех драйверов интерфейса хост-контроллера, необходимых для поддержки используемых на данный момент стандартов. У ReactOS сейчас есть ohci для USB 1.1 и ehci для USB 2.0. Теперь проекту необходим uhci для поддержки стандарта Intel для интерфейса USB 1.0, и xhci для поддержки нового интерфейса USB 3.0. Кроме того, был завершен и протестирован в Windows драйвер HID (устройства взаимодействия с человеком) для мышей, но множество различных проблем в ReactOS препятствовало его функционированию. Драйвер HID для клавиатур тоже находится в разработке, но пока ещё не готов. Для поддержки устройств хранения информации потребуются дополнительные драйверы.
Ещё одним отсутствующим элементом USB-стека является поддержка составных USB-устройств, таких, как объединённый разъём клавиатуры/мыши. Кэмерон, пришедший на помощь на этом этапе, исследовал большое количество ошибок при регистрации и установке устройств, а также занялся исправлением проблем, препятствовавших работе USB-мыши в ReactOS. Он также устранил несколько других проблемы непосредственно в стеке USB, начиная с критических сбоев системы и до ошибок при компиляции различных компонентов. Йоханнес рассчитывает что теперь, благодаря исправлениям Кэмерона, реализация поддержки клавиатуры в системе не должна вызвать затруднений. Как только ветка USB будет достаточно хорошо протестирована и объединена с основной кодовой базой проекта, ReactOS сделает еще один весомый шаг вперед с точки зрения удобства пользования. Этот шаг, однако, будет сделан уже после выхода 0.3.14.
Shell32
Рафал Харабиен (Rafał Harabień) был занят работой над библиотекой shell32, устраняя различные проблемы, начиная с ошибок загрузки значков и диалоговых окон, и до исправления множества ошибок буфера/памяти. Для загрузки значков в окнах свойств использовалась неполная реализация кода, который уже существовал в shell32. Рафал удалил поврежденный код и изменил окна свойств таким образом, чтобы использовать уже имеющуюся в shell32 реализацию этого кода. Теперь окна свойств могут загрузить любые значки, а не только те, которые были заданы в реестре.
Код диалогового окна "Открыть с помощью" также был переписан, что позволило показать все заданные в реестре приложения. Диалоговое окно больше не будет также добавлять дублирующиеся записи в реестр. Тем не менее, осталось ещё провести огромный объём работы над библиотекой shell32 до того, как она и explorer_new смогут заменить текущую оболочку. К примеру, меню "Пуск" недокументировано и в ReactOS не реализовано, поэтому Рафал не знает точно, каким образом разделены функциональные обязанности по просмотру содержимого папок между оболочкой проводника и библиотекой shell32. Пока не удастся полностью разобраться с этими проблемами, в ReactOS останется его текущая оболочка.
Повреждение файловой системы
Пьер Швейцер (Pierre Schweitzer) недавно переписал код в dir.c, спровоцировав обнаружение уже существовавшей до этого проблемы – записи на диск поврежденных данных. Исследуя проблему, Пьер заметил, что один из тестеров уже встречался с подобной проблемой и предоставил протокол отладки. Этот протокол, однако, указывал на то, что причиной такого поведения была другая функция, а не та, которую обнаружил сам Пьер в ходе собственных исследований. При ближайшем рассмотрении Пьер заметил, что обе виновные функции вызывали другую внутреннюю функцию в библиотеке времени исполнения, которая обрабатывала пути. Эта функция была одной из нескольких, которыми занимался Алекс Ионеску (Alex Ionescu) в процессе переработки и исправления кода, но так и не закончил работу.
В результате, несостоятельность старого кода, вкупе с собственными изменениями Пьера, так или иначе провоцировали повреждение файловой системы. Пьер закончил работу, начатую Алексом, и проблема с повреждением, кажется, пропала, хотя он до сих пор не до конца понял, что именно было неправильно в старом коде и приводило драйвер файловой системы к записи на диск испорченных данных.
Полный текст статьи читайте на OpenNet