35 DPRINT(
"VfatCleanupFile(DeviceExt %p, FileObject %p)\n",
47 DeviceExt->OpenHandleCount--;
71 DeviceExt->OpenHandleCount--;
100 if (tmpFileObject !=
NULL)
156 pFcb->
Flags |= FCB_CLEANED_UP;
163 #ifdef ENABLE_SWAPOUT 186 IrpContext->
Irp->IoStatus.Information = 0;
194 IrpContext->
Irp->IoStatus.Information = 0;
PEPROCESS NTAPI IoGetRequestorProcess(IN PIRP Irp)
static BOOLEAN VfatCleanupFile(PVFAT_IRP_CONTEXT IrpContext)
#define CCB_DELETE_ON_CLOSE
PDEVICE_EXTENSION DeviceExt
#define BooleanFlagOn(F, SF)
NTSTATUS VfatCleanup(PVFAT_IRP_CONTEXT IrpContext)
FORCEINLINE BOOLEAN vfatFCBIsDirectory(PVFATFCB FCB)
#define FILE_NOTIFY_CHANGE_FILE_NAME
VOID NTAPI ObDereferenceObject(IN PVOID Object)
#define FILE_NOTIFY_CHANGE_DIR_NAME
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
#define FCB_DELETE_PENDING
VOID NTAPI FsRtlNotifyCleanup(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
SHARE_ACCESS FCBShareAccess
#define FILE_ACTION_REMOVED
_Inout_ PFILE_OBJECT FileObject
#define FsRtlAreThereCurrentFileLocks(FL)
PDEVICE_OBJECT DeviceObject
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
FSRTL_COMMON_FCB_HEADER RFCB
FORCEINLINE BOOLEAN VfatIsDirectoryEmpty(PDEVICE_EXTENSION DeviceExt, struct _VFATFCB *Fcb)
#define VCB_DISMOUNT_PENDING
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
BOOLEAN VfatCheckForDismount(IN PDEVICE_EXTENSION DeviceExt, IN BOOLEAN Force)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
struct _VFATFCB * PVFATFCB
#define FCB_DELAYED_CLOSE
#define FCB_CACHE_INITIALIZED
PVFAT_GLOBAL_DATA VfatGlobalData
ERESOURCE PagingIoResource
FORCEINLINE VOID vfatReportChange(IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB Fcb, IN ULONG FilterMatch, IN ULONG Action)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
FORCEINLINE NTSTATUS VfatDelEntry(PDEVICE_EXTENSION DeviceExt, struct _VFATFCB *Fcb, struct _VFAT_MOVE_CONTEXT *MoveContext)
#define FO_CLEANUP_COMPLETE
PDEVICE_OBJECT DeviceObject
NTSTATUS VfatUpdateEntry(IN PDEVICE_EXTENSION DeviceExt, IN PVFATFCB pFcb)
LIST_ENTRY ParentListHead