Bug 4434

Summary: Невозможность регистрации Магистрали
Product: WINE@Etersoft Reporter: Devaev Maxim <mdevaev>
Component: ОбщееAssignee: Александр Морозов <amorozov>
Status: CLOSED LATER QA Contact: Денис Баранов <baraka>
Severity: normal    
Priority: P4 CC: baraka, sonner
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 11738 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 4592    

Description Devaev Maxim 2009-11-11 17:17:02 MSK
Программа - "Магистраль". Не показывается
информация в окне справки, ни дерево
навигации, ни текст.
Демо-версия:
http://www.sigma-soft.ru/download/install.shtml?prog=ata32

Бутылка: rt/11738
Для воспроизведения следует установить
"./dosdevices/p\:/Windows/sigma-soft/magistral/Setup.exe", все
установочные параметры оставить по
умолчанию. Затем запустить "./dosdevices/c\:/Program\
Files/Magistral/ata32.exe". При первом запуске возможно
зависание, в этом случае следует нажать
Ctrl-C, программа пропустит текущую
выполнаемую задачу и будет запускаться
дальше.
При активации "Справка"->"О программе" ожидание бесконечное. При нажатии "Отмена" не вычисляется идентификационный код компьютера. В следдствие этого становится невозможной регистрация программы.
Comment 1 Александр Морозов 2009-12-23 20:58:33 MSK
При установке программы ставится драйвер neosigma.sys, который падает при работе Магистрали с ним: при запуске через wine - на нереализованной функции ExSystemTimeToLocalTime, при запуске через ww - в wine_nt_to_unix_file_name (из-за того, что в NtCreateFile вместо имени файла передаётся какой-то мусор). То, что при запуске через wine не падает в wine_nt_to_unix_file_name, видимо, просто везение. Перед падением драйвер много раз пытается выполнить ioctl с кодом SMART_RCV_DRIVE_DATA.
Comment 2 Александр Морозов 2009-12-25 20:28:52 MSK
Написал небольшой тестовый драйвер для SMART_RCV_DRIVE_DATA: wine-etersoft-devel/windrv/drv_4434. Модифицировал WINE так, чтобы возвращалось то же, что и в Windows, но это вроде бы ничего не изменило.

Если модифицировать NtCreateFile так, чтобы на нём не происходило падения, то дальше neosigma.sys пытается получать указатели на устройства \Device\ScsiPort0, ..., \Device\ScsiPort7. В WINE эти устройства не создаются. На машине winxp есть \Device\ScsiPort0 и 1, являющиеся симлинками на \Device\Ide\IdePort0 и 1. Если создать устройство \Device\ScsiPort0, то neosigma.sys попытается выполнить для него IOCTL_SCSI_MINIPORT.

После обращения к драйверу Магистраль пытается открыть "\\\\.\\Scsi\x1d:". В данном пути смущает символ \x1d. На машине winxp существуют устройства \\.\Scsi0: и \\.\Scsi1: