33 DbgPrint(
"-------------------------------------------------------------\n");
35 DbgPrint(
".exr %p;.cxr %p;\n", ExceptionPointer->ExceptionRecord,
36 ExceptionPointer->ContextRecord);
37 DbgPrint(
"-------------------------------------------------------------\n");
46 if ((IrpContext->Identifier.Type !=
EXT2ICX) ||
50 }
else if (IrpContext->DeviceObject) {
52 Vcb = (
PEXT2_VCB) IrpContext->DeviceObject->DeviceExtension;
66 (
ULONG_PTR)ExceptionPointer->ContextRecord,
81 DEBUG(
DL_ERR, (
"Ext2ExceptionFilter: Catching exception %xh\n",
87 IrpContext->ExceptionInProgress =
TRUE;
97 DEBUG(
DL_ERR, (
"Ext2ExceptionFilter: Passing on exception %#x\n",
118 if ( (IrpContext->Identifier.Type !=
EXT2ICX) ||
124 Status = IrpContext->ExceptionCode;
126 if (IrpContext->Irp) {
137 Vcb = (
PEXT2_VCB) IrpContext->DeviceObject->DeviceExtension;
152 if (IrpContext->IsTopLevel &&
188 if (RealDevice ==
NULL) {
199 Status = IrpContext->ExceptionCode;
201 if (RealDevice !=
NULL) {
222 (IrpContext->FileObject->RelatedFileObject ==
NULL) &&
252 goto release_context;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
#define IRP_CONTEXT_FLAG_WAIT
#define NT_SUCCESS(StatCode)
NTSTATUS Ext2ExceptionHandler(IN PEXT2_IRP_CONTEXT IrpContext)
NTSTATUS Ext2ExceptionFilter(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
_In_ PIO_STACK_LOCATION IrpSp
#define PsGetCurrentThread()
#define KeGetCurrentIrql()
#define ExAcquireResourceSharedLite(res, wait)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
BOOLEAN Ext2CheckDismount(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bForce)
#define VCB_DISMOUNT_PENDING
#define EXT2_BUGCHK_EXCEPT
#define Ext2NormalizeAndRaiseStatus(IRPCONTEXT, STATUS)
VOID Ext2FreeIrpContext(IN PEXT2_IRP_CONTEXT IrpContext)
#define Ext2BugCheck(A, B, C, D)
#define Ext2CompleteRequest(Irp, bPrint, PriorityBoost)
#define VCB_DEVICE_REMOVED
struct _EXT2_VCB * PEXT2_VCB
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
VOID NTAPI IoRaiseHardError(IN PIRP Irp, IN PVPB Vpb, IN PDEVICE_OBJECT RealDeviceObject)
VOID NTAPI IoSetDeviceToVerify(IN PETHREAD Thread, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT NTAPI IoGetDeviceToVerify(IN PETHREAD Thread)
NTSTATUS NTAPI IoVerifyVolume(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN AllowRawMount)
#define STATUS_VOLUME_DISMOUNTED
struct _EXCEPTION_RECORD * ExceptionRecord
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_DEVICE
#define STATUS_UNSUCCESSFUL
#define STATUS_WRONG_VOLUME
#define STATUS_VERIFY_REQUIRED
#define IoIsErrorUserInduced(Status)