[NTOS:IO]
authorDmitry Chapyshev <dmitry@reactos.org>
Sat, 3 Sep 2016 19:10:09 +0000 (19:10 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Sat, 3 Sep 2016 19:10:09 +0000 (19:10 +0000)
- Add dismount checking (function should behave the same in the fastio and the slow case)
- Fix comment

svn path=/trunk/; revision=72552

reactos/ntoskrnl/io/iomgr/iofunc.c

index 07dc8ce..7fb698d 100644 (file)
@@ -348,7 +348,7 @@ IopDeviceFsIoControl(IN HANDLE DeviceHandle,
         DeviceObject = IoGetRelatedDeviceObject(FileObject);
     }
 
-    /* If that's FS I/O, try to do it with FastIO path */
+    /* If this is a device I/O, try to do it with FastIO path */
     if (IsDevIoCtl)
     {
         PFAST_IO_DISPATCH FastIoDispatch = DeviceObject->DriverObject->FastIoDispatch;
@@ -614,6 +614,12 @@ IopDeviceFsIoControl(IN HANDLE DeviceHandle,
     /* Use deferred completion for FS I/O */
     Irp->Flags |= (!IsDevIoCtl) ? IRP_DEFER_IO_COMPLETION : 0;
 
+    /* If we're to dismount a volume, increaase the dismount count */
+    if (IoControlCode == FSCTL_DISMOUNT_VOLUME)
+    {
+        InterlockedExchangeAdd((PLONG)&SharedUserData->DismountCount, 1);
+    }
+
     /* Perform the call */
     return IopPerformSynchronousRequest(DeviceObject,
                                         Irp,