22 #pragma alloc_text(PAGE, RfsdCleanup) 69 #pragma prefast( suppress: 28137, "by design" ) 73 IrpContext->IsSynchronous
79 VcbResourceAcquired =
TRUE;
99 Vcb->OpenHandleCount--;
101 if (!
Vcb->OpenHandleCount) {
118 #pragma prefast( suppress: 28137, "by design" ) 122 IrpContext->IsSynchronous
129 FcbResourceAcquired =
TRUE;
150 Irp = IrpContext->Irp;
155 Fcb->NonCachedOpenCount--;
158 Vcb->OpenFileHandleCount--;
192 &
Fcb->FileLockAnchor,
208 Fcb->AnsiFileName.Buffer
217 (
Fcb->NonCachedOpenCount != 0) &&
218 (
Fcb->NonCachedOpenCount ==
Fcb->ReferenceCount) &&
219 (
Fcb->SectionObject.DataSectionObject !=
NULL)) {
243 #pragma prefast( suppress: 28137, "by design" ) 247 IrpContext->IsSynchronous
253 FcbPagingIoAcquired =
TRUE;
277 if (FcbPagingIoAcquired) {
282 FcbPagingIoAcquired =
FALSE;
289 Fcb->AnsiFileName.Buffer ));
312 if (FcbPagingIoAcquired) {
318 if (FcbResourceAcquired) {
324 if (VcbResourceAcquired) {
330 if (!IrpContext->ExceptionInProgress) {
334 IrpContext->Irp->IoStatus.Status =
Status;
struct _RFSD_CCB * PRFSD_CCB
#define ExGetCurrentResourceThread()
PEPROCESS NTAPI IoGetRequestorProcess(IN PIRP Irp)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
#define __drv_mustHoldCriticalRegion
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
FSRTL_ADVANCED_FCB_HEADER Header
VOID NTAPI FsRtlNotifyFullChangeDirectory(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext, IN PSTRING FullDirectoryName, IN BOOLEAN WatchTree, IN BOOLEAN IgnoreBuffer, IN ULONG CompletionFilter, IN PIRP NotifyIrp, IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL)
VOID RfsdNotifyReportChange(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb, IN ULONG Filter, IN ULONG Action)
#define FILE_NOTIFY_CHANGE_FILE_NAME
NTSTATUS RfsdFlushFile(IN PRFSD_FCB Fcb)
NTSTATUS RfsdQueueRequest(IN PRFSD_IRP_CONTEXT IrpContext)
#define FILE_NOTIFY_CHANGE_DIR_NAME
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
#define FCB_DELETE_PENDING
PDEVICE_OBJECT DeviceObject
#define FCB_DELETE_ON_CLOSE
VOID NTAPI FsRtlNotifyCleanup(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ PDEVICE_OBJECT DeviceObject
struct _RFSD_FCB * PRFSD_FCB
NTFSIDENTIFIER Identifier
#define CcIsFileCached(FO)
#define FILE_ACTION_REMOVED
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PFILE_LOCK_INFO NTAPI FsRtlGetNextFileLock(IN PFILE_LOCK FileLock, IN BOOLEAN Restart)
struct _RFSD_VCB * PRFSD_VCB
#define RfsdGetCurrentProcessName()
#define NT_SUCCESS(StatCode)
NTSTATUS RfsdDeleteFile(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define FO_CACHE_SUPPORTED
#define VCB_WRITE_PROTECTED
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
#define FO_CLEANUP_COMPLETE
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
#define VCB_VOLUME_LOCKED
ERESOURCE PagingIoResource
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
VOID RfsdClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
__drv_mustHoldCriticalRegion NTSTATUS RfsdCleanup(IN PRFSD_IRP_CONTEXT IrpContext)