Author: pschweitzer Date: Mon Nov 10 17:42:51 2014 New Revision: 65361 URL: http://svn.reactos.org/svn/reactos?rev=65361&view=rev Log: [FASTFAT] - Store IO VPB in our VCB for later use - Prepare a spare VPB in our VCB for dismount swapout
Modified: trunk/reactos/drivers/filesystems/fastfat/fsctl.c trunk/reactos/drivers/filesystems/fastfat/vfat.h Modified: trunk/reactos/drivers/filesystems/fastfat/fsctl.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat/fsctl.c?rev=65361&r1=65360&r2=65361&view=diff ============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/fsctl.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/fsctl.c [iso-8859-1] Mon Nov 10 17:42:51 2014 @@ -521,6 +521,14 @@ /* Initialize this resource early ... it's used in VfatCleanup */ ExInitializeResourceLite(&DeviceExt->DirResource); + DeviceExt->IoVPB = DeviceObject->Vpb; + DeviceExt->SpareVPB = ExAllocatePoolWithTag(NonPagedPool, sizeof(VPB), TAG_VFAT); + if (DeviceExt->SpareVPB == NULL) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + goto ByeBye; + } + DeviceExt->FATFileObject = IoCreateStreamFileObject(NULL, DeviceExt->StorageDevice); Fcb = vfatNewFCB(DeviceExt, &NameU); if (Fcb == NULL) @@ -622,6 +630,8 @@ /* Cleanup */ if (DeviceExt && DeviceExt->FATFileObject) ObDereferenceObject (DeviceExt->FATFileObject); + if (DeviceExt && DeviceExt->SpareVPB) + ExFreePoolWithTag(DeviceExt->SpareVPB, TAG_VFAT); if (Fcb) vfatDestroyFCB(Fcb); if (Ccb) Modified: trunk/reactos/drivers/filesystems/fastfat/vfat.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat/vfat.h?rev=65361&r1=65360&r2=65361&view=diff ============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] Mon Nov 10 17:42:51 2014 @@ -299,6 +299,10 @@ /* Incremented on IRP_MJ_CREATE, decremented on IRP_MJ_CLEANUP */ ULONG OpenHandleCount; + + /* VPBs for dismount */ + PVPB IoVPB; + PVPB SpareVPB; } DEVICE_EXTENSION, VCB, *PVCB; typedef struct