MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2ExceptionFilter

Function Ext2ExceptionFilter

Ext4Fsd/except.c:20–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18/* DEFINITIONS *************************************************************/
19
20NTSTATUS
21Ext2ExceptionFilter (
22 IN PEXT2_IRP_CONTEXT IrpContext,
23 IN PEXCEPTION_POINTERS ExceptionPointer
24)
25{
26 NTSTATUS Status = EXCEPTION_EXECUTE_HANDLER;
27 NTSTATUS ExceptionCode;
28 PEXCEPTION_RECORD ExceptRecord;
29
30 ExceptRecord = ExceptionPointer->ExceptionRecord;
31 ExceptionCode = ExceptRecord->ExceptionCode;
32
33 DbgPrint("-------------------------------------------------------------\n");
34 DbgPrint("Exception happends in Ext2Fsd (code %xh):\n", ExceptionCode);
35 DbgPrint(".exr %p;.cxr %p;\n", ExceptionPointer->ExceptionRecord,
36 ExceptionPointer->ContextRecord);
37 DbgPrint("-------------------------------------------------------------\n");
38
39 DbgBreak();
40
41 //
42 // Check IrpContext is valid or not
43 //
44
45 if (IrpContext) {
46 if ((IrpContext->Identifier.Type != EXT2ICX) ||
47 (IrpContext->Identifier.Size != sizeof(EXT2_IRP_CONTEXT))) {
48 DbgBreak();
49 IrpContext = NULL;
50 } else if (IrpContext->DeviceObject) {
51 PEXT2_VCB Vcb = NULL;
52 Vcb = (PEXT2_VCB) IrpContext->DeviceObject->DeviceExtension;
53 if (NULL == Vcb) {
54 Status = EXCEPTION_EXECUTE_HANDLER;
55 } else {
56 if (Vcb->Identifier.Type == EXT2VCB && !IsMounted(Vcb)) {
57 Status = EXCEPTION_EXECUTE_HANDLER;
58 }
59 }
60 }
61 } else {
62 if (FsRtlIsNtstatusExpected(ExceptionCode)) {
63 return EXCEPTION_EXECUTE_HANDLER;
64 } else {
65 Ext2BugCheck( EXT2_BUGCHK_EXCEPT, (ULONG_PTR)ExceptRecord,
66 (ULONG_PTR)ExceptionPointer->ContextRecord,
67 (ULONG_PTR)ExceptRecord->ExceptionAddress );
68 }
69 }
70
71 if (IrpContext) {
72 SetFlag(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT);
73 }
74
75 if ( Status == EXCEPTION_EXECUTE_HANDLER ||
76 FsRtlIsNtstatusExpected(ExceptionCode)) {
77 //

Callers 3

Ext2DeQueueRequestFunction · 0.85
Ext2BuildRequestFunction · 0.85
Ext2DeQueueCloseRequestFunction · 0.85

Calls 1

Ext2FreeIrpContextFunction · 0.85

Tested by

no test coverage detected