WINE@Etersoft 1.0 Local 1.0.10-eter20/14 kUb-8.04 Устанавливаем драйверы Штрих ФР-К для работы с одноименным фискальником. Установка проходит без ошибок, однако, запустив тест драйвера (DrvFRTst.exe) нажатие на Настройку свойств (дабы отыскать, на каком COM-порту находится фискальный регистратор) не открывает соответствующее окно. В консоли в это время: fixme:ole:OleCreatePropertyFrame (0x1002c,16,16,(null),1,0x37d8c0,1,0x13b848,419,0,(nil)), not implemented (olepro32.dll) Игры через winecfg с параметрами библиотеки olepro32.dll (втроенная, сторонняя) результата не дали. На 1,0,9-network (другая машинка) не воспроизводится, окно появляется, тест проходит, девайс находится на ожидаемом СОМе.
Да, при попытке просто "занять/освободить порт" в консоль сыпется: fixme:comm:set_queue_size insize 1024 outsize 1024 unimplemented stub И ФР так и не видится, хотя номер порта указан верно. пользователь, от имени которого происходит работа, есть в dialout/uucp. Права на /dev/ttyS*: interra@shop2:~$ ls -l /dev/ttyS* crw-rw---- 1 root dialout 4, 64 2009-04-30 16:27 /dev/ttyS0 crw-rw---- 1 root dialout 4, 65 2009-04-30 19:26 /dev/ttyS1 crw-rw---- 1 root dialout 4, 66 2009-04-30 19:26 /dev/ttyS2 crw-rw---- 1 root dialout 4, 67 2009-04-30 19:26 /dev/ttyS3
При запуске wine98 program.exe тоже не работает?
Нужно проверить, из-за wine98 ли такая регрессия или сама по себе. В случае успешного запуска с помощью wine98 можно будет прописать DrvFRTst.exe и подобные утилиты в замещения.
(In reply to comment #2) > При запуске > wine98 program.exe > тоже не работает? Через wine98 без проблем работает. Думаю лучше прописать вызов через wine98 таких программ, чем чинить все с нуля.
Не соглашусь, что совсем без проблем... Да, запускается, и если компорт указать корректный, то Штрих-ФР-К я вижу. Однако поиск оборудования вешается, то есть нажатие кнопки Поиск дает затемнение кнопки, вроде как ищет... но на этом все и заканчивается, искать может годами ;) При этом кнопа Закрыть работает, и окошко по ней закрывается нормально. Вывод при запуске в консоли присутствует такой: err:service:RPC_Init RpcServerListen failed with error 1714 err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1714
eter23-16, воспроизводится
При поиске оборудования на текущем eterhack не происходит обращения к COM-портам. Это видно по логам +comm,+file.
При запуске в одной и той же .wine на atlant поиск не работает, а на cellar работает. Запускал через WINEDLLOVERRIDES="oleaut32=n,b" ww DrvFRTst.exe На cellar просто заходил через ssh -Y cellar
Если запустить программу под отладчиком, установить брейк на 0x40004a60 (функцию потока, создающегося при нажатии на "Начать поиск") и выйти из отладчика при первом появлении исключения, то поиск оборудования выполняется и на atlant. Правда, при закрытии окошка поиска всё падает.
Выполнение функции, расположенной по адресу 0x40004a60 на cellar: 0050:Starting thread proc 0x40004a60 (arg=0xa7f400) 0050:Call ole32.CoInitialize(00000000) ret=00b68612 ............ На atlant: 0031:Starting thread proc 0x40004a60 (arg=0xa8f400) 0031:Call KERNEL32.ExitThread(00000000) ret=40004ae2
DrvFR.dll: CODE:00058024 push ebp CODE:00058025 mov ebp, esp CODE:00058027 push ecx CODE:00058028 push ebx CODE:00058029 mov [ebp+var_4], eax CODE:0005802C mov eax, [ebp+var_4] CODE:0005802F cmp word ptr [eax+32h], 0 CODE:00058034 jz short loc_58042 CODE:00058036 mov ebx, [ebp+var_4] Если в отладчике установить брейк на 00058024, то поиск оборудования начинает работать, а если на 0005802F - нет. При этом содержимое регистров перед выполнением 0005802F в обоих случаях одинаково. Возможно, баг связан с многопоточностью, например, на одной машине раньше начинает выполняться один поток, а на другой - другой.
Баг не проявляется, если добавить задержку в start_thread().
Принято. WINE@Etersoft 1.0.10 eter27/eter19 Работает при запуске через wine98