From 108d48388ec78e79df456037dfd34b0c116e3cd7 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Tue, 11 Sep 2007 10:29:03 +0000 Subject: [PATCH] - 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. svn path=/trunk/; revision=29002 --- reactos/drivers/filesystems/cdfs/common.c | 3 +++ reactos/drivers/filesystems/cdfs/create.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/reactos/drivers/filesystems/cdfs/common.c b/reactos/drivers/filesystems/cdfs/common.c index dce3edef973..518205a8a46 100644 --- a/reactos/drivers/filesystems/cdfs/common.c +++ b/reactos/drivers/filesystems/cdfs/common.c @@ -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); diff --git a/reactos/drivers/filesystems/cdfs/create.c b/reactos/drivers/filesystems/cdfs/create.c index aded346405e..99b922c724c 100644 --- a/reactos/drivers/filesystems/cdfs/create.c +++ b/reactos/drivers/filesystems/cdfs/create.c @@ -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; }