mirror of
https://github.com/reactos/reactos.git
synced 2024-10-23 14:36:11 +00:00
Inform/query the cache/memory manager if a file would be deleted.
svn path=/trunk/; revision=3985
This commit is contained in:
parent
3e3f697064
commit
3ce30c75e1
|
@ -1,4 +1,4 @@
|
|||
/* $Id: finfo.c,v 1.23 2002/12/27 23:50:20 gvg Exp $
|
||||
/* $Id: finfo.c,v 1.24 2003/01/11 16:00:16 hbirr Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -193,16 +193,27 @@ VfatSetDispositionInformation(PFILE_OBJECT FileObject,
|
|||
}
|
||||
if (DispositionInfo->DoDeleteFile)
|
||||
{
|
||||
KeAcquireSpinLock (&DeviceExt->FcbListLock, &oldIrql);
|
||||
count = FCB->RefCount;
|
||||
if (FCB->RefCount > 1)
|
||||
Status = STATUS_ACCESS_DENIED;
|
||||
if (MmFlushImageSection (FileObject->SectionObjectPointers, MmFlushForDelete))
|
||||
{
|
||||
KeAcquireSpinLock (&DeviceExt->FcbListLock, &oldIrql);
|
||||
count = FCB->RefCount;
|
||||
if (FCB->RefCount > 1)
|
||||
{
|
||||
DPRINT1("%d %x\n", FCB->RefCount, CcGetFileObjectFromSectionPtrs(FileObject->SectionObjectPointers));
|
||||
Status = STATUS_ACCESS_DENIED;
|
||||
}
|
||||
else
|
||||
{
|
||||
FCB->Flags |= FCB_DELETE_PENDING;
|
||||
FileObject->DeletePending = TRUE;
|
||||
}
|
||||
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
||||
}
|
||||
else
|
||||
{
|
||||
FCB->Flags |= FCB_DELETE_PENDING;
|
||||
FileObject->DeletePending = TRUE;
|
||||
DPRINT1("MmFlushImageSection returned FALSE\n");
|
||||
Status = STATUS_ACCESS_DENIED;
|
||||
}
|
||||
KeReleaseSpinLock(&DeviceExt->FcbListLock, oldIrql);
|
||||
DPRINT("RefCount:%d\n", count);
|
||||
if (NT_SUCCESS(Status) && vfatFCBIsDirectory(FCB))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue