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

Function Ext2ReadVolume

Ext4Fsd/read.c:63–298  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61
62
63NTSTATUS
64Ext2ReadVolume (IN PEXT2_IRP_CONTEXT IrpContext)
65{
66 NTSTATUS Status = STATUS_UNSUCCESSFUL;
67
68 PEXT2_VCB Vcb = NULL;
69 PEXT2_CCB Ccb = NULL;
70 PEXT2_FCBVCB FcbOrVcb = NULL;
71 PFILE_OBJECT FileObject = NULL;
72
73 PDEVICE_OBJECT DeviceObject = NULL;
74
75 PIRP Irp = NULL;
76 PIO_STACK_LOCATION IoStackLocation = NULL;
77
78 ULONG Length;
79 LARGE_INTEGER ByteOffset;
80
81 BOOLEAN PagingIo;
82 BOOLEAN Nocache;
83 BOOLEAN SynchronousIo;
84 BOOLEAN MainResourceAcquired = FALSE;
85
86 PUCHAR Buffer = NULL;
87 EXT2_EXTENT BlockArray;
88
89 __try {
90
91 ASSERT(IrpContext);
92 ASSERT((IrpContext->Identifier.Type == EXT2ICX) &&
93 (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT)));
94
95 DeviceObject = IrpContext->DeviceObject;
96 Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension;
97 ASSERT(Vcb != NULL);
98 ASSERT((Vcb->Identifier.Type == EXT2VCB) &&
99 (Vcb->Identifier.Size == sizeof(EXT2_VCB)));
100
101 FileObject = IrpContext->FileObject;
102 FcbOrVcb = (PEXT2_FCBVCB) FileObject->FsContext;
103 ASSERT(FcbOrVcb);
104
105 if (!(FcbOrVcb->Identifier.Type == EXT2VCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) {
106
107 Status = STATUS_INVALID_DEVICE_REQUEST;
108 __leave;
109 }
110
111 Ccb = (PEXT2_CCB) FileObject->FsContext2;
112 Irp = IrpContext->Irp;
113 Irp->IoStatus.Information = 0;
114 IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
115
116 Length = IoStackLocation->Parameters.Read.Length;
117 ByteOffset = IoStackLocation->Parameters.Read.ByteOffset;
118
119 PagingIo = IsFlagOn(Irp->Flags, IRP_PAGING_IO);
120 Nocache = IsFlagOn(Irp->Flags, IRP_NOCACHE) || (Ccb != NULL);

Callers 1

Ext2ReadFunction · 0.85

Calls 7

Ext2GetUserBufferFunction · 0.85
Ext2LockUserBufferFunction · 0.85
Ext2ReadWriteBlocksFunction · 0.85
Ext2QueueRequestFunction · 0.85
Ext2CompleteIrpContextFunction · 0.85
Ext2FreeIrpContextFunction · 0.85
Ext2FlushVolumeFunction · 0.70

Tested by

no test coverage detected