Bug 2086

Summary: функция netapi32.dll.NetShareGetInfo
Product: Wine School Reporter: Калюхович Юрий <goga>
Component: КМ ШколаAssignee: Виталий Перов <vitperov>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P4 CC: baraka, lav
Version: 1.0   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
URL: http://msdn.microsoft.com/en-us/library/aa370642(VS.85).aspx
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 2187, 2117    
Bug Blocks: 1931, 2585, 1527    
Attachments: скриншот запроса пароля
Сообщение об ошибке

Description Калюхович Юрий 2008-07-07 17:35:11 MSD
необходимо реализовать функцию netapi32.dll.NetShareGetInfo
обнаружилась при попытке запуска сервера км-школы (бага 1931)
Comment 1 Виталий Перов 2008-07-09 13:20:56 MSD
Created attachment 562 [details]
скриншот запроса пароля

Сделал заглушку.

Багу воспроизвести не получается.
Копирую файл настроек (приаттаченый к баге 1931), запускаю DBEngine.exe

Приложение запускается и требует пароль. При отказе файл настроек перезаписывается, и при повторном запуске пароль больше не запрашивается.
Сообщения wine: Call from 0x7ee2f910 to unimplemented function
netapi32.dll.NetShareGetInfo, aborting
так и не появилось
Comment 2 Калюхович Юрий 2008-07-14 12:43:00 MSD
воспроизведение ошибки:

бутылка km-school-sql
файл c:/C&M/KMSchool/Server/DBEngine.ini заменяется на c:/C&M/KMSchool/DBEngine.ini
$ winexp DBEngine.exe
в окне "смена пароля" вводим 'новый пароль' - kmschool
в следующем окне выбираем ip-адрес (192.168.0.26)
после чего появляется окно с сообщением об ошибке, а в консоль выпадает сообщение о нереализованной функции
Comment 3 Виталий Перов 2008-07-14 15:06:33 MSD
Делаю всё как написано. Появляется сообщение. Скриншот в предыдущем посте.
Скорее всего мне нуже пароль к БД.
Comment 4 Калюхович Юрий 2008-07-14 15:55:02 MSD
(In reply to comment #3)
> Делаю всё как написано. Появляется
> сообщение. Скриншот в предыдущем посте.
> Скорее всего мне нуже пароль к БД.
> 

mssql сервер 192.168.0.164
логин:пароль администратора - sa:qwe
Comment 5 Виталий Перов 2008-07-14 17:43:11 MSD
Бага воспроизвелась.
При реализованой загрушке получается:
fixme:share:NetShareGetInfo Stub (L"" L"{E309FE16-4330-4342-83C7-E0DD3C98FFBC}" 502 0x32f6a4)

Нулевое имя сервера означает локальный компьютер.
Уровень возвращаемой информации 502 означает следующее:
Return information about the shared resource, including name of the resource, type and permissions, number of connections, and other pertinent information. The bufptr parameter points to a SHARE_INFO_502 structure.

Сейчас функция возвращает NERR_NetNameNotFound.
Сразу после этого:
wine: Call from 0x7b843118 to unimplemented function netapi32.dll.NetShareAdd, aborting

Думаю необходимо сначала реализовать NetShareAdd, которая расшаривает ресурс и хранит информацию о нём.
Хранить информацию можно в реестре.
А как расшарить? Просто добавить ссылку в /unc?

Comment 6 Vitaly Lipatov 2008-07-14 18:18:36 MSD
Опять же, только заглушку, потому что расшарить (предоставить сетевой доступ к указанному каталогу) мы всё равно не можем (это нужно через SAMBA делать).
Comment 7 Виталий Перов 2008-07-28 18:43:01 MSD
Сделал патч, но протестировать не могу.
Проблемы с запуском из бутылки при работе через nx. (Боря в курсе)
Проблематично будет ставить КМ-школу + SQL сервер локально.

Патч отправил. Необходимо его протестировать когда он окажется в сборке.
Comment 8 Виталий Перов 2008-07-30 11:55:22 MSD
Created attachment 624 [details]
Сообщение об ошибке

Протестировал:
Первый раз, когда записи в реестре нет, NetShareGetInfo возвращает ошибку и вызывается NetShareAdd, которая добавляет запись в реестр. В этом случае программа начинает работать.
При втором запуске, когда запись в реестре уже есть и требуется её прочитать программа выдаёт сообщение об ошибке (см. скриншот)
Comment 9 Виталий Перов 2008-07-30 12:22:36 MSD
функция NetShareGetInfo даже не вызывается!
Удалил запись из реестра - ошибка осталась.
Думаю это уже другая бага
Comment 10 Виталий Перов 2008-07-30 12:44:08 MSD
Проблема в том, что после закрытия программы в процессах продолжает висеть C:\C&M\KMSchool\Server\Filemanager
При выполнении wineserver -k проблема исчезает, но появляется новая:
До выполнения wineserver -k запись в реестре есть, а после - она пропадает
Comment 11 Виталий Перов 2008-07-30 13:26:37 MSD
Вызов RegFlushKey() после добавлнения ключа проблему не решает. Ключ по-прежнему исчезает после убивания процесса.
Думаю, проблему надо решать исправлением баги с завершением процесса
Comment 12 Виталий Перов 2008-10-29 19:07:22 MSK
откатил коммиты:
8906a50c4222cfe0bb4a76e18255b8e20836c05b
6a6cbd1ac71c4c2e9376af2c8858f7e8616f4fdb

Требуется создать новые относительно ветки pure
Comment 13 Виталий Перов 2008-12-01 19:41:37 MSK
Отправил патч повторно.
Был получен ответ:

> +    GetCurrentDirectoryA(MAX_PATH, tmpPath);
> +    result = SetCurrentDirectoryW(path);
> +    SetCurrentDirectoryA(tmpPath);
> +    if (!result) return ERROR_FILE_NOT_FOUND;

This is not the right way to test if a directory exists.

Переделываю.
Comment 14 Виталий Перов 2008-12-01 20:28:14 MSK
Переписал. Отправил