Bug 4061

Summary: GetDriveTypeA возвращает неверный тип диска
Product: WINE@Etersoft Reporter: Евгений Шкригунов <eshkrig>
Component: Файловые операцииAssignee: Александр Морозов <amorozov>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: major    
Priority: P2 CC: kondratyuk, lav, vitperov
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 3589    

Description Евгений Шкригунов 2009-06-29 11:52:32 MSD
В winecfg тип диска E: установлен в "CD-ROM". Программа, запускаемая в wine не видит диск E: как CD-ROM.
Ниже кусок вывода WINEDEBUG=+relay wine program.exe
...
0047:Call KERNEL32.GetDriveTypeA(0033e4d4 "E:\\") ret=7660003f
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=7660003f
...
Возвращаемое значение (retval=00000004) соответствует сетевому диску.

Система: CentOS 5.3 (со всеми обновлениями)
Не работает с версией WINE@Etersoft:
1.0.10 (wine-etersoft-1.0.10-eter25, wine-etersoft-network-1.0.10-eter18)

Домашний каталог пользователя смонтирован по NFS.
На самом деле для всех дисков возвращается retval=00000004:
0047:Call KERNEL32.GetDriveTypeA(0033e494 "C:\\") ret=7660003f
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=7660003f
0047:Call KERNEL32.GetDriveTypeA(00c468f4 "D:\\") ret=0050f5a5
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=0050f5a5
0047:Call KERNEL32.GetDriveTypeA(00c468bc "E:\\") ret=0050f5a5
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=0050f5a5
0047:Call KERNEL32.GetDriveTypeA(00c468b8 "S:\\") ret=0050f5a5
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=0050f5a5
0047:Call KERNEL32.GetDriveTypeA(00c46790 "U:\\") ret=0050f5a5
0047:Ret  KERNEL32.GetDriveTypeA() retval=00000004 ret=0050f5a5

Вне зависимости от установки типа диска в winecfg, значение, возвращаемое функцией KERNEL32.GetDriveTypeA, не изменятеся.

Для диска E: были попытки:
копирования содержимого CD в каталог, соответствующий диску E: с установкой типа "CD-ROM"
монтирования ISO-образа в каталог, соответствующий диску E: с и без установки типа "CD-ROM"

А также замечены глюки с невозможность установить метку диска в winecfg. Хотя последнюю проблему хоть как-то можно обойти (созданием вручную файла .windows-label), то проблема с типом диска не дает нам работать.
Comment 1 Евгений Шкригунов 2009-06-29 14:03:02 MSD
С монтированием ISO-образа все сработало. Необходимо было добавить права чтения для соответствующего /dev/loopX.
Comment 2 Виталий Перов 2009-07-08 17:12:08 MSD
Посмотрел.
На самом деле, если параметры передаются верно,  GetDriveTypeA должна вызывать GetDriveTypeW. Странно, но в вашем логе этого нет.

Вроде всё должно работать.

Я так понял, баги нет?
Comment 3 Евгений Шкригунов 2009-07-09 09:03:58 MSD
(In reply to comment #2)
> Посмотрел.
> На самом деле, если параметры передаются
> верно,  GetDriveTypeA должна вызывать GetDriveTypeW.
> Странно, но в вашем логе этого нет.

Лог получен запуском WINEDEBUG=+relay wine program.exe - там все, что и должно быть.

> 
> Вроде всё должно работать.

А если без "вроде", а взять и проверить? Прочтите внимательно первый пост: там описаны все условия запуска и проблемы.

> Я так понял, баги нет?
> 

Бага есть. Видимости смонтированного ISO-образа удалось достичь (второй пост), но в целом, ни типами, ни метками дисков из winecfg управлять не удается.

И что это Вы ставите состояние для багрепорта в "решена"???
Покажите решение!!!
Comment 4 Виталий Перов 2009-07-09 09:13:37 MSD
Да, прошу прощения.
Увидел:
> С монтированием ISO-образа все сработало.
и решил, что баги нет.

Постараюсь в ближайшее время посмотреть


>Лог получен запуском WINEDEBUG=+relay wine program.exe -
>там все, что и должно быть.
Я к тому, что указанные строчки идут подряд? Или между ними были ещё строчки?
Comment 5 Евгений Шкригунов 2009-07-09 11:45:56 MSD
(In reply to comment #4)
> >Лог получен запуском WINEDEBUG=+relay wine program.exe -
> >там все, что и должно быть.
> Я к тому, что указанные строчки идут подряд?
> Или между ними были ещё строчки?
> 

Подряд.
Comment 6 Александр Морозов 2009-07-15 19:49:57 MSD
Патч:
kernel32: Use drive types returned by mountmgr in the first place (eterbug #4061).
Comment 7 Денис Баранов 2009-07-28 19:57:22 MSD
Принято.
WINE@Etersoft 1.0.11 eter3/eter2
Comment 8 Vitaly Lipatov 2014-09-12 02:51:15 MSK
Закрываем баги, принятые более года назад, и до сих пор не закрытые.