65{
67
68
74
76
78
80
82
83 Irp = IrpContext->OriginatingIrp;
84
86
87
88
89
90
91
93
94
95
96
97
99
103 } else {
104
106 }
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
123
124 ExceptionCompletedIrp =
FALSE;
125
127
128
129
130
131
133
135
137
138 } else {
139
141 }
142
144
146
148
149
150
151
152
154
155 Status = FatCommonCreate( IrpContext,
Irp );
156 break;
157
158
159
160
161
162
163
164
166
167 {
172
173
174
175
176
178
179
180
181
182
183
190 &VcbDeleted );
191
192
193
194
195
196 if (VcbDeleted) {
197
199 }
200
202
204
205 break;
206 }
207
208
209
210
211
213
214 (
VOID) FatCommonRead( IrpContext,
Irp );
215 break;
216
217
218
219
220
222
223 (
VOID) FatCommonWrite( IrpContext,
Irp );
224 break;
225
226
227
228
229
231
232 (
VOID) FatCommonQueryInformation( IrpContext,
Irp );
233 break;
234
235
236
237
238
240
241 (
VOID) FatCommonSetInformation( IrpContext,
Irp );
242 break;
243
244
245
246
247
249
251 break;
252
253
254
255
256
258
260 break;
261
262
263
264
265
267
268 (
VOID) FatCommonFlushBuffers( IrpContext,
Irp );
269 break;
270
271
272
273
274
276
277 (
VOID) FatCommonQueryVolumeInfo( IrpContext,
Irp );
278 break;
279
280
281
282
283
285
286 (
VOID) FatCommonSetVolumeInfo( IrpContext,
Irp );
287 break;
288
289
290
291
292
294
295 (
VOID) FatCommonCleanup( IrpContext,
Irp );
296 break;
297
298
299
300
301
303
304 (
VOID) FatCommonDirectoryControl( IrpContext,
Irp );
305 break;
306
307
308
309
310
312
313 (
VOID) FatCommonFileSystemControl( IrpContext,
Irp );
314 break;
315
316
317
318
319
321
322 (
VOID) FatCommonLockControl( IrpContext,
Irp );
323 break;
324
325
326
327
328
330
331 (
VOID) FatCommonDeviceControl( IrpContext,
Irp );
332 break;
333
334
335
336
337
339
340 (
VOID) FatCommonShutdown( IrpContext,
Irp );
341 break;
342
343
344
345
346
348
349
350
351
352
353 (
VOID) FatCommonPnp( IrpContext,
Irp );
354 break;
355
356
357
358
359
360
361 default:
362
364 break;
365
366 }
367
369
370
371
372
373
374
375
376
378 ExceptionCompletedIrp =
TRUE;
380
382
384
385
387
388
389
390
391
393 }
394
395
396
397
398
399
400 if ( VolDo !=
NULL ) {
401
403
404
405
406
407
408
410
411
412
413
414
415
417
418 break;
419 }
420
421
422
423
424
427 WorkQueueItem.List );
428
430
431 Irp = IrpContext->OriginatingIrp;
432
434
435 continue;
436
437 } else {
438
439 break;
440 }
441 }
442
443 return;
444}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN TypeOfOpen
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
enum _TYPE_OF_OPEN TYPE_OF_OPEN
#define IRP_CONTEXT_FLAG_IN_FSP
#define IRP_CONTEXT_FLAG_WAIT
IRP_CONTEXT * PIRP_CONTEXT
_In_ PIO_STACK_LOCATION IrpSp
NTSTATUS FatCommonQueryEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
NTSTATUS FatCommonSetEa(IN PIRP_CONTEXT IrpContext, IN PIRP Irp)
PVOID FatRemoveOverflowEntry(IN PVOLUME_DEVICE_OBJECT VolDo)
ULONG FatExceptionFilter(IN PIRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
#define DebugTrace(INDENT, LEVEL, X, Y)
TYPE_OF_OPEN FatDecodeFileObject(_In_ PFILE_OBJECT FileObject, _Outptr_ PVCB *Vcb, _Outptr_ PFCB *FcbOrDcb, _Outptr_ PCCB *Ccb)
#define FatCompleteRequest(IRPCONTEXT, IRP, STATUS)
#define IRP_CONTEXT_FLAG_RECURSIVE_CALL
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define FSRTL_FSP_TOP_LEVEL_IRP
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionInformation()
#define IRP_MJ_DIRECTORY_CONTROL
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_LOCK_CONTROL
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
base of all file and directory entries
PDEVICE_OBJECT DeviceObject
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
_In_ PDEVICE_OBJECT DeviceObject
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SET_VOLUME_INFORMATION
#define IRP_MJ_FLUSH_BUFFERS