proper implementation of CDROM_Verify
Peter Beutner
p.beutner at gmx.net
Tue Oct 25 15:26:21 CDT 2005
Change CDROM_Verify to actually check only if a media is inserted(which is what
IOCTL_{STORAGE,CDROM}_CHECK_VERIFY should do) instead of trying to do some unneccessary
subchannel reading.
Changelog:
- proper implementation of IOCTL_{STORAGE,CDROM}_CHECK_VERIFY
-------------- next part --------------
Index: dlls/ntdll/cdrom.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/cdrom.c,v
retrieving revision 1.71
diff -u -r1.71 cdrom.c
--- dlls/ntdll/cdrom.c 12 Sep 2005 10:30:06 -0000 1.71
+++ dlls/ntdll/cdrom.c 19 Oct 2005 19:20:18 -0000
@@ -1029,17 +1029,28 @@
/******************************************************************
* CDROM_Verify
- *
+ * Implements: IOCTL_STORAGE_CHECK_VERIFY
+ * IOCTL_CDROM_CHECK_VERIFY
*
*/
static NTSTATUS CDROM_Verify(int dev, int fd)
{
- /* quick implementation */
- CDROM_SUB_Q_DATA_FORMAT fmt;
- SUB_Q_CHANNEL_DATA data;
+#if defined(linux)
+ int ret;
+
+ ret = ioctl(fd, CDROM_DRIVE_STATUS, NULL);
+ if(ret == -1) {
+ TRACE("ioctl CDROM_DRIVE_STATUS failed(%s)!\n", strerror(errno));
+ return CDROM_GetStatusCode(ret);
+ }
- fmt.Format = IOCTL_CDROM_CURRENT_POSITION;
- return CDROM_ReadQChannel(dev, fd, &fmt, &data) ? 1 : 0;
+ if(ret == CDS_DISC_OK)
+ return STATUS_SUCCESS;
+ else
+ return STATUS_NO_MEDIA_IN_DEVICE;
+#endif
+ FIXME("not implemented for non-linux\n");
+ return STATUS_NOT_SUPPORTED;
}
/******************************************************************
More information about the wine-patches
mailing list