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

Function Ext2ReadFile

Ext4Fsd/read.c:470–830  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

468}
469
470NTSTATUS
471Ext2ReadFile(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

Callers 1

Ext2ReadFunction · 0.85

Calls 7

Ext2IsFastIoPossibleFunction · 0.85
Ext2GetUserBufferFunction · 0.85
Ext2LockUserBufferFunction · 0.85
Ext2ReadInodeFunction · 0.85
Ext2QueueRequestFunction · 0.85
Ext2CompleteIrpContextFunction · 0.85
Ext2FreeIrpContextFunction · 0.85

Tested by

no test coverage detected