- When media is changed, set VolumeDevice's DO_VERIFY_VOLUME flag so it actually...
authorAleksey Bragin <aleksey@reactos.org>
Tue, 11 Sep 2007 10:29:03 +0000 (10:29 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Tue, 11 Sep 2007 10:29:03 +0000 (10:29 +0000)
- IoVerifyVolume() actually gives two successful statuses - STATUS_SUCCESS and STATUS_WRONG_VOLUME. Respect that when processing an device ioctl.
- "Inability to change CD after boot" issue is fixed.

svn path=/trunk/; revision=29002

reactos/drivers/filesystems/cdfs/common.c
reactos/drivers/filesystems/cdfs/create.c

index dce3ede..518205a 100644 (file)
@@ -199,6 +199,9 @@ CdfsDeviceIoControl (IN PDEVICE_OBJECT DeviceObject,
 
       NewStatus = IoVerifyVolume(DeviceToVerify, FALSE);
       DPRINT1("IoVerifyVolume() returned (Status %lx)\n", NewStatus);
+
+      if (NewStatus == STATUS_SUCCESS || NewStatus == STATUS_WRONG_VOLUME)
+          Status = STATUS_SUCCESS;
     }
 
   DPRINT("Returning Status %x\n", Status);
index aded346..99b922c 100644 (file)
@@ -141,6 +141,10 @@ CdfsOpenFile(PDEVICE_EXTENSION DeviceExt,
   DPRINT ("Status %lx\n", Status);
   if (!NT_SUCCESS(Status))
     {
+      if (Status == STATUS_NO_MEDIA_IN_DEVICE || Status == STATUS_VERIFY_REQUIRED)
+      {
+          DeviceExt->VolumeDevice->Flags |= DO_VERIFY_VOLUME;
+      }
       DPRINT1 ("Status %lx\n", Status);
       return Status;
     }