22 #pragma alloc_text(PAGE, RfsdClose) 23 #pragma alloc_text(PAGE, RfsdQueueCloseRequest) 24 #pragma alloc_text(PAGE, RfsdDeQueueCloseRequest) 68 #pragma prefast( suppress: 28137, "by design" ) 72 IrpContext->IsSynchronous )) {
74 Vcb->OpenFileHandleCount,
Vcb->ReferenceCount));
80 VcbResourceAcquired =
TRUE;
86 Ccb = IrpContext->Ccb;
103 Vcb->ReferenceCount--;
149 #pragma prefast( suppress: 28137, "by design" ) 153 IrpContext->IsSynchronous )) {
158 FcbResourceAcquired =
TRUE;
169 Fcb->ReferenceCount--;
170 Vcb->ReferenceCount--;
188 if (!
Fcb->ReferenceCount) {
197 FcbResourceAcquired =
FALSE;
204 if (FcbResourceAcquired) {
210 if (VcbResourceAcquired) {
216 if (!IrpContext->ExceptionInProgress) {
277 IrpContext->Fcb = (
PRFSD_FCB) IrpContext->FileObject->FsContext;
278 IrpContext->Ccb = (
PRFSD_CCB) IrpContext->FileObject->FsContext2;
280 IrpContext->FileObject =
NULL;
284 IrpContext->IsSynchronous =
TRUE;
287 &IrpContext->WorkQueueItem,
struct _RFSD_CCB * PRFSD_CCB
NTSTATUS RfsdExceptionHandler(IN PRFSD_IRP_CONTEXT IrpContext)
#define ExGetCurrentResourceThread()
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
#define FsRtlEnterFileSystem
#define __drv_mustHoldCriticalRegion
#define FsRtlExitFileSystem
__drv_mustHoldCriticalRegion NTSTATUS RfsdClose(IN PRFSD_IRP_CONTEXT IrpContext)
VOID RfsdFreeFcb(IN PRFSD_FCB Fcb)
PDEVICE_OBJECT DeviceObject
#define IRP_CONTEXT_FLAG_DELAY_CLOSE
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
struct _FCB::@713::@716 Fcb
_In_ PDEVICE_OBJECT DeviceObject
struct _RFSD_FCB * PRFSD_FCB
NTFSIDENTIFIER Identifier
VOID RfsdQueueCloseRequest(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID RfsdFreeVcb(IN PRFSD_VCB Vcb)
#define _SEH2_GetExceptionInformation()
NTSTATUS RfsdExceptionFilter(IN PRFSD_IRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
RFSD_IDENTIFIER_TYPE Type
VOID RfsdRemoveVcb(PRFSD_VCB Vcb)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
struct _RFSD_VCB * PRFSD_VCB
#define ExInitializeWorkItem(Item, Routine, Context)
RFSD_IDENTIFIER Identifier
VOID NTAPI RfsdDeQueueCloseRequest(IN PVOID Context)
#define VCB_DISMOUNT_PENDING
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
struct _RFSD_IRP_CONTEXT * PRFSD_IRP_CONTEXT
VOID RfsdFreeCcb(IN PRFSD_CCB Ccb)
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
VOID RfsdClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
#define _SEH2_EXCEPT(...)