36 if (tmpFileObject !=
NULL)
46 pFcb->
Flags |= FCB_CLOSED;
80 pFcb = CloseContext->
Fcb;
90 ConcurrentDeletion =
FALSE;
95 ConcurrentDeletion =
TRUE;
100 if (!ConcurrentDeletion)
123 if (CloseContext ==
NULL)
129 CloseContext->
Vcb = DeviceExt;
168 DPRINT(
"VfatCloseFile(DeviceExt %p, FileObject %p)\n",
199 if (IsVolume && DeviceExt->OpenHandleCount == 0)
221 DPRINT(
"Closing file system\n");
#define NT_SUCCESS(StatCode)
#define IRPCONTEXT_CANWAIT
#define FCB_CACHE_INITIALIZED
NTSTATUS VfatPostCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
NTSTATUS VfatCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
VOID VfatCommonCloseFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB pFcb)
VOID NTAPI VfatCloseWorker(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
NTSTATUS VfatClose(PVFAT_IRP_CONTEXT IrpContext)
BOOLEAN VfatCheckForDismount(IN PDEVICE_EXTENSION DeviceExt, IN BOOLEAN Force)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define ExAcquireResourceExclusiveLite(res, wait)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define ClearFlag(_F, _SF)
#define BooleanFlagOn(F, SF)
PVFAT_GLOBAL_DATA VfatGlobalData
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
base of all file and directory entries
BOOLEAN CloseWorkerRunning
PIO_WORKITEM CloseWorkItem
PAGED_LOOKASIDE_LIST CloseContextLookasideList
PDEVICE_OBJECT DeviceObject
PDEVICE_OBJECT DeviceObject
PDEVICE_EXTENSION DeviceExt
struct _VFAT_CLOSE_CONTEXT * CloseContext
LIST_ENTRY CloseListEntry
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INSUFFICIENT_RESOURCES
struct _VFATFCB * PVFATFCB
#define FCB_DELAYED_CLOSE
struct _VFATCCB * PVFATCCB
FORCEINLINE NTSTATUS VfatMarkIrpContextForQueue(PVFAT_IRP_CONTEXT IrpContext)
VOID vfatDestroyCCB(PVFATCCB pCcb)
VOID vfatReleaseFCB(PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define ObDereferenceObject