37 if (tmpFileObject !=
NULL)
47 pFcb->
Flags |= FCB_CLOSED;
81 pFcb = CloseContext->
Fcb;
91 ConcurrentDeletion =
FALSE;
96 ConcurrentDeletion =
TRUE;
101 if (!ConcurrentDeletion)
124 if (CloseContext ==
NULL)
130 CloseContext->
Vcb = DeviceExt;
169 DPRINT(
"VfatCloseFile(DeviceExt %p, FileObject %p)\n",
199 #ifdef ENABLE_SWAPOUT 200 if (IsVolume && DeviceExt->OpenHandleCount == 0)
222 DPRINT(
"Closing file system\n");
LIST_ENTRY CloseListEntry
NTSTATUS VfatCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
#define STATUS_INSUFFICIENT_RESOURCES
NTSTATUS VfatPostCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
PDEVICE_EXTENSION DeviceExt
struct _VFATCCB * PVFATCCB
#define BooleanFlagOn(F, SF)
PIO_WORKITEM CloseWorkItem
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define IRPCONTEXT_CANWAIT
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PDEVICE_OBJECT DeviceObject
#define NT_SUCCESS(StatCode)
#define ObDereferenceObject
NTSTATUS VfatClose(PVFAT_IRP_CONTEXT IrpContext)
FORCEINLINE NTSTATUS VfatMarkIrpContextForQueue(PVFAT_IRP_CONTEXT IrpContext)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
VOID vfatDestroyCCB(PVFATCCB pCcb)
BOOLEAN VfatCheckForDismount(IN PDEVICE_EXTENSION DeviceExt, IN BOOLEAN Force)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
struct _VFATFCB * PVFATFCB
struct _VFAT_CLOSE_CONTEXT * CloseContext
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
#define FCB_DELAYED_CLOSE
#define FCB_CACHE_INITIALIZED
PVFAT_GLOBAL_DATA VfatGlobalData
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
#define InitializeListHead(ListHead)
PDEVICE_OBJECT DeviceObject
BOOLEAN CloseWorkerRunning
VOID NTAPI VfatCloseWorker(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
VOID vfatReleaseFCB(PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
VOID VfatCommonCloseFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB pFcb)
PAGED_LOOKASIDE_LIST CloseContextLookasideList
base of all file and directory entries