Don't check the share access for directories.
[reactos.git] / reactos / drivers / fs / vfat / cleanup.c
index df24e8c..c56f4fb 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
  * FILE:             drivers/fs/vfat/cleanup.c
@@ -23,10 +22,10 @@ VfatCleanupFile(PVFAT_IRP_CONTEXT IrpContext)
 {
   PVFATFCB pFcb;
   PFILE_OBJECT FileObject = IrpContext->FileObject;
-  
+
   DPRINT("VfatCleanupFile(DeviceExt %x, FileObject %x)\n",
         IrpContext->DeviceExt, FileObject);
-  
+
   /* FIXME: handle file/directory deletion here */
   pFcb = (PVFATFCB) FileObject->FsContext;
   if (pFcb)
@@ -49,6 +48,19 @@ VfatCleanupFile(PVFAT_IRP_CONTEXT IrpContext)
      if (pFcb->Flags & FCB_DELETE_PENDING &&
          pFcb->OpenHandleCount == 1)
        {
+        PFILE_OBJECT tmpFileObject;
+        tmpFileObject = pFcb->FileObject;
+        if (tmpFileObject != NULL)
+          {
+            pFcb->FileObject = NULL;
+#ifdef USE_ROS_CC_AND_FS
+             CcRosReleaseFileCache(tmpFileObject);
+#else
+             CcUninitializeCacheMap(tmpFileObject, NULL, NULL);
+#endif
+             ObDereferenceObject(tmpFileObject);
+           }
+
 #if 0
          /* FIXME:
          *  CcPurgeCacheSection is unimplemented.
@@ -63,7 +75,10 @@ VfatCleanupFile(PVFAT_IRP_CONTEXT IrpContext)
      CcUninitializeCacheMap (FileObject, NULL, NULL);
 #endif
      pFcb->OpenHandleCount--;
-     IoRemoveShareAccess(FileObject, &pFcb->FCBShareAccess);
+     if (!(*pFcb->Attributes & FILE_ATTRIBUTE_DIRECTORY))
+       {
+         IoRemoveShareAccess(FileObject, &pFcb->FCBShareAccess);
+       }
     }
   return STATUS_SUCCESS;
 }