Author: fireball Date: Tue Sep 11 14:29:03 2007 New Revision: 29002
URL: http://svn.reactos.org/svn/reactos?rev=29002&view=rev Log: - When media is changed, set VolumeDevice's DO_VERIFY_VOLUME flag so it actually gets verified. - 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.
Modified: trunk/reactos/drivers/filesystems/cdfs/common.c trunk/reactos/drivers/filesystems/cdfs/create.c
Modified: trunk/reactos/drivers/filesystems/cdfs/common.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/cdfs/co... ============================================================================== --- trunk/reactos/drivers/filesystems/cdfs/common.c (original) +++ trunk/reactos/drivers/filesystems/cdfs/common.c Tue Sep 11 14:29:03 2007 @@ -199,6 +199,9 @@
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);
Modified: trunk/reactos/drivers/filesystems/cdfs/create.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/cdfs/cr... ============================================================================== --- trunk/reactos/drivers/filesystems/cdfs/create.c (original) +++ trunk/reactos/drivers/filesystems/cdfs/create.c Tue Sep 11 14:29:03 2007 @@ -141,6 +141,10 @@ 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; }