- Print the file information class if debug prints are enabled in VfatGet/SetInformation. - Check for the open handle count instead of the reference count if file deletion is requested. Modified: trunk/reactos/drivers/fs/vfat/finfo.c _____
Modified: trunk/reactos/drivers/fs/vfat/finfo.c --- trunk/reactos/drivers/fs/vfat/finfo.c 2005-01-25 21:09:55 UTC (rev 13279) +++ trunk/reactos/drivers/fs/vfat/finfo.c 2005-01-25 21:10:42 UTC (rev 13280) @@ -15,6 +15,54 @@
#define NDEBUG #include "vfat.h"
+/* GLOBALS ******************************************************************/ + +const char* FileInformationClassNames[] = +{ + "??????", + "FileDirectoryInformation", + "FileFullDirectoryInformation", + "FileBothDirectoryInformation", + "FileBasicInformation", + "FileStandardInformation", + "FileInternalInformation", + "FileEaInformation", + "FileAccessInformation", + "FileNameInformation", + "FileRenameInformation", + "FileLinkInformation", + "FileNamesInformation", + "FileDispositionInformation", + "FilePositionInformation", + "FileFullEaInformation", + "FileModeInformation", + "FileAlignmentInformation", + "FileAllInformation", + "FileAllocationInformation", + "FileEndOfFileInformation", + "FileAlternateNameInformation", + "FileStreamInformation", + "FilePipeInformation", + "FilePipeLocalInformation", + "FilePipeRemoteInformation", + "FileMailslotQueryInformation", + "FileMailslotSetInformation", + "FileCompressionInformation", + "FileObjectIdInformation", + "FileCompletionInformation", + "FileMoveClusterInformation", + "FileQuotaInformation", + "FileReparsePointInformation", + "FileNetworkOpenInformation", + "FileAttributeTagInformation", + "FileTrackingInformation", + "FileIdBothDirectoryInformation", + "FileIdFullDirectoryInformation", + "FileValidDataLengthInformation", + "FileShortNameInformation", + "FileMaximumInformation" +}; + /* FUNCTIONS ****************************************************************/
static NTSTATUS @@ -248,9 +296,9 @@ { if (MmFlushImageSection (FileObject->SectionObjectPointer, MmFlushForDelete)) { - if (FCB->RefCount > 1) + if (FCB->OpenHandleCount > 1) { - DPRINT1("%d %x\n", FCB->RefCount, CcGetFileObjectFromSectionPtrs(FileObject->SectionObjectPointer)); + DPRINT1("%d %x\n", FCB->OpenHandleCount, CcGetFileObjectFromSectionPtrs(FileObject->SectionObjectPointer)); Status = STATUS_ACCESS_DENIED; } else @@ -650,6 +698,10 @@ FileInformationClass = IrpContext->Stack->Parameters.QueryFile.FileInformationClass; FCB = (PVFATFCB) IrpContext->FileObject->FsContext;
+ DPRINT("VfatQueryInformation is called for '%s'\n", + FileInformationClass >= FileMaximumInformation - 1 ? "????" : FileInformationClassNames[FileInformationClass]); + + SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer; BufferLength = IrpContext->Stack->Parameters.QueryFile.Length;
@@ -754,6 +806,9 @@ IrpContext->Stack->Parameters.SetFile.FileInformationClass; FCB = (PVFATFCB) IrpContext->FileObject->FsContext; SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer; + + DPRINT("VfatSetInformation is called for '%s'\n", + FileInformationClass >= FileMaximumInformation - 1 ? "????" : FileInformationClassNames[ FileInformationClass]);
DPRINT("FileInformationClass %d\n", FileInformationClass); DPRINT("SystemBuffer %x\n", SystemBuffer);