New eject command issue

Christian Costa titan.costa at wanadoo.fr
Wed Nov 2 17:01:26 CST 2005


Alexandre Julliard wrote:

>Christian Costa <titan.costa at wanadoo.fr> writes:
>
>  
>
>>If I set H: to autodetect, GetDriveType returns DRIVE_FIXED (3).
>>    
>>
>
>Then you need to figure out why FILE_GetDeviceInfo doesn't recognize
>it as a CDROM.
>
>  
>
Something wrong is happening here, fstatfs return a good fs magic ID for 
reiserfs and vfat partitions.
However, for the cdrom it returns 0x9fa1 which corresponds to OPENPROM 
fs !?! (and this for my cdreader and my cd recorder)
I don't know why I get this but this make autodetection unusable for CDROM.

I've done some further investigations and I found some strange things 
for the IOCTL involved in eject.

FSCTL_DISMOUNT_VOLUME :
in DIR_unmount_device (in ntdll/directory.c):
- unmount_device server call (in fd.c) is called but in unmount_device, 
the function tries to retreive a device object given the device
return by fstat but no device object has been previously created so 
get_device fails. My understanding is that this server call
should closed all fds associated with the device but files stay opened.
- system("umount ....") is called to unmount the device but umount 
requires to be root and the return code of umount command is not tested 
so the call fails silently and FSCTL_DISMOUNT_VOLUME returns a success 
status

IOCTL_STORAGE_MEDIA_REMOVAL :
in CDROM_ControlEjection (ntdll/cdrom.c), it seems the CDROM_LOCKDOOR 
ioctl is not supported on my box for both the
cdreader and the cdrecorder.

IOCTL_STORAGE_EJECT_MEDIA
in CDROM_SetTray (ntdll/cdrom.c), the CDROMEJECT works for my cdrecorder 
but I think it should not because the cd is
still mounted and I can see the cached data even if I change the CD by 
another one.

Well, I don't know if there is usefull information here but it's what 
I've found so far...

Thx,
Christian






More information about the wine-devel mailing list