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

Function Ext2WriteVolume

Ext4Fsd/write.c:219–649  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217
218
219NTSTATUS
220Ext2WriteVolume (IN PEXT2_IRP_CONTEXT IrpContext)
221{
222 NTSTATUS Status = STATUS_UNSUCCESSFUL;
223
224 PEXT2_VCB Vcb = NULL;
225 PEXT2_CCB Ccb = NULL;
226 PEXT2_FCBVCB FcbOrVcb = NULL;
227 PFILE_OBJECT FileObject = NULL;
228
229 PDEVICE_OBJECT DeviceObject = NULL;
230
231 PIRP Irp = NULL;
232 PIO_STACK_LOCATION IoStackLocation = NULL;
233
234 ULONG Length;
235 LARGE_INTEGER ByteOffset;
236
237 BOOLEAN PagingIo = FALSE;
238 BOOLEAN Nocache = FALSE;
239 BOOLEAN SynchronousIo = FALSE;
240 BOOLEAN MainResourceAcquired = FALSE;
241
242 BOOLEAN bDeferred = FALSE;
243
244 PUCHAR Buffer = NULL;
245 PEXT2_EXTENT Chain = NULL;
246 EXT2_EXTENT BlockArray;
247
248 __try {
249
250 ASSERT(IrpContext);
251 ASSERT((IrpContext->Identifier.Type == EXT2ICX) &&
252 (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT)));
253
254 DeviceObject = IrpContext->DeviceObject;
255 Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension;
256 ASSERT(Vcb != NULL);
257 ASSERT((Vcb->Identifier.Type == EXT2VCB) &&
258 (Vcb->Identifier.Size == sizeof(EXT2_VCB)));
259
260 FileObject = IrpContext->FileObject;
261 FcbOrVcb = (PEXT2_FCBVCB) FileObject->FsContext;
262 ASSERT(FcbOrVcb);
263
264 if (!(FcbOrVcb->Identifier.Type == EXT2VCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) {
265 Status = STATUS_INVALID_DEVICE_REQUEST;
266 __leave;
267 }
268
269 Ccb = (PEXT2_CCB) FileObject->FsContext2;
270 Irp = IrpContext->Irp;
271 IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
272
273 Length = IoStackLocation->Parameters.Write.Length;
274 ByteOffset = IoStackLocation->Parameters.Write.ByteOffset;
275
276 PagingIo = IsFlagOn(Irp->Flags, IRP_PAGING_IO);

Callers 1

Ext2WriteFunction · 0.85

Calls 12

Ext2LockUserBufferFunction · 0.85
Ext2PurgeVolumeFunction · 0.85
Ext2GetUserBufferFunction · 0.85
Ext2AddVcbExtentFunction · 0.85
Ext2LookupVcbExtentFunction · 0.85
Ext2AllocateExtentFunction · 0.85
Ext2ReadWriteBlocksFunction · 0.85
Ext2RemoveVcbExtentFunction · 0.85
Ext2QueueRequestFunction · 0.85
Ext2CompleteIrpContextFunction · 0.85
Ext2FreeIrpContextFunction · 0.85
Ext2DestroyExtentChainFunction · 0.85

Tested by

no test coverage detected