- Add a flag to enable (or disable depends on your reading ;-)) the VPB swapout process for volume umount.
- By default, disable it for MSVC builds.
This *might* lolfix the MSVC builds.
Just for the record, we also have a bug in the GCC builds but it doesn't seem to show up.
The main issue is that after formatting, we close handle to the volume, and IRP_MJ_CLEANUP is properly received and initiates a bit of dismount.
But then, the IRP_MJ_CLOSE is never received (why????) and thus, dismount cannot properly end.
This is a real & serious issue.
svn path=/trunk/; revision=65527
ExReleaseResourceLite(&pFcb->MainResource);
}
+#ifdef ENABLE_SWAPOUT
if (DeviceExt->Flags & VCB_DISMOUNT_PENDING)
{
VfatCheckForDismount(DeviceExt, FALSE);
}
+#endif
return STATUS_SUCCESS;
}
vfatDestroyCCB(pCcb);
}
+#ifdef ENABLE_SWAPOUT
if (DeviceExt->OpenHandleCount == 0)
{
VfatCheckForDismount(DeviceExt, FALSE);
}
+#endif
return Status;
}
/* Mark we're being dismounted */
DeviceExt->Flags |= VCB_DISMOUNT_PENDING;
+#ifndef ENABLE_SWAPOUT
+ IrpContext->DeviceObject->Vpb->Flags &= ~VPB_MOUNTED;
+#endif
ExReleaseResourceLite(&DeviceExt->FatResource);
#include <pseh/pseh2.h>
#define USE_ROS_CC_AND_FS
+#ifndef _MSC_VER
+#define ENABLE_SWAPOUT
+#endif
#define ROUND_DOWN(n, align) \
(((ULONG)n) & ~((align) - 1l))