27{
34
38
40
44
50 }
51
56
58
61 Ccb = IrpContext->Ccb;
62
63 } else {
64
70 }
73 }
74
75 DEBUG(
DL_INF, (
"Ext2Close: (VCB) Vcb = %p ReferCount = %d\n",
76 Vcb,
Vcb->ReferenceCount));
77
78
79
80
81
82
83
84
85
86
88
92 DEBUG(
DL_INF, (
"Ext2Close: PENDING ... Vcb: %xh/%xh\n",
93 Vcb->OpenHandleCount,
Vcb->ReferenceCount));
96 }
97 VcbResourceAcquired =
TRUE;
98
100
103
106 }
107 }
108
111 }
112
116 }
117
123 }
124 FcbResourceAcquired =
TRUE;
125
127
133 }
134
135 DEBUG(
DL_INF, (
"Ext2Close: Fcb = %p OpenHandleCount= %u ReferenceCount=%u NonCachedCount=%u %wZ\n",
137
141 }
142
143
144 FcbDerefDeferred =
TRUE;
148 Fcb->TsDrop.QuadPart = 0;
149 } else {
151 }
153
156 }
157
159
161
162 if (FcbResourceAcquired) {
164 }
165
166 if (VcbResourceAcquired) {
168 }
169
170 if (!IrpContext->ExceptionInProgress) {
171
173
175
176 } else {
177
179 }
180 }
181
182 if (FcbDerefDeferred)
185
187}
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
VOID Ext2QueueCloseRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define KeQuerySystemTime(t)
#define ExAcquireResourceExclusiveLite(res, wait)
#define IsFileDeleted(Mcb)
#define IsExt2FsDevice(DO)
#define FCB_DELETE_PENDING
struct _EXT2_VCB * PEXT2_VCB
#define IRP_CONTEXT_FLAG_DELAY_CLOSE
struct _EXT2_CCB * PEXT2_CCB
VOID Ext2FreeCcb(IN PEXT2_VCB Vcb, IN PEXT2_CCB Ccb)
struct _EXT2_FCB * PEXT2_FCB
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
struct _FCB::@729::@732 Fcb
NTFSIDENTIFIER Identifier
FSRTL_ADVANCED_FCB_HEADER Header
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject