| 468 | } |
| 469 | |
| 470 | NTSTATUS |
| 471 | Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpContext) |
| 472 | { |
| 473 | NTSTATUS Status = STATUS_UNSUCCESSFUL; |
| 474 | |
| 475 | PEXT2_VCB Vcb = NULL; |
| 476 | PEXT2_FCB Fcb = NULL; |
| 477 | PEXT2_CCB Ccb = NULL; |
| 478 | PFILE_OBJECT FileObject = NULL; |
| 479 | |
| 480 | PDEVICE_OBJECT DeviceObject = NULL; |
| 481 | |
| 482 | PIRP Irp = NULL; |
| 483 | PIO_STACK_LOCATION IoStackLocation = NULL; |
| 484 | |
| 485 | ULONG Length; |
| 486 | ULONG ReturnedLength = 0; |
| 487 | LARGE_INTEGER ByteOffset; |
| 488 | |
| 489 | BOOLEAN OpPostIrp = FALSE; |
| 490 | BOOLEAN PagingIo; |
| 491 | BOOLEAN Nocache; |
| 492 | BOOLEAN SynchronousIo; |
| 493 | BOOLEAN MainResourceAcquired = FALSE; |
| 494 | BOOLEAN PagingIoResourceAcquired = FALSE; |
| 495 | |
| 496 | PUCHAR Buffer; |
| 497 | |
| 498 | __try { |
| 499 | |
| 500 | ASSERT(IrpContext); |
| 501 | ASSERT((IrpContext->Identifier.Type == EXT2ICX) && |
| 502 | (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); |
| 503 | |
| 504 | DeviceObject = IrpContext->DeviceObject; |
| 505 | Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; |
| 506 | ASSERT(Vcb != NULL); |
| 507 | ASSERT((Vcb->Identifier.Type == EXT2VCB) && |
| 508 | (Vcb->Identifier.Size == sizeof(EXT2_VCB))); |
| 509 | |
| 510 | FileObject = IrpContext->FileObject; |
| 511 | Fcb = (PEXT2_FCB) FileObject->FsContext; |
| 512 | ASSERT(Fcb); |
| 513 | ASSERT((Fcb->Identifier.Type == EXT2FCB) && |
| 514 | (Fcb->Identifier.Size == sizeof(EXT2_FCB))); |
| 515 | |
| 516 | Ccb = (PEXT2_CCB) FileObject->FsContext2; |
| 517 | |
| 518 | Irp = IrpContext->Irp; |
| 519 | IoStackLocation = IoGetCurrentIrpStackLocation(Irp); |
| 520 | |
| 521 | Length = IoStackLocation->Parameters.Read.Length; |
| 522 | ByteOffset = IoStackLocation->Parameters.Read.ByteOffset; |
| 523 | |
| 524 | PagingIo = IsFlagOn(Irp->Flags, IRP_PAGING_IO); |
| 525 | Nocache = IsFlagOn(Irp->Flags, IRP_NOCACHE); |
| 526 | SynchronousIo = IsFlagOn(FileObject->Flags, FO_SYNCHRONOUS_IO); |
| 527 |
no test coverage detected