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

Function Ext2WriteFile

Ext4Fsd/write.c:746–1301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

744
745
746NTSTATUS
747Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpContext)
748{
749 PEXT2_VCB Vcb = NULL;
750 PEXT2_FCB Fcb = NULL;
751 PEXT2_CCB Ccb = NULL;
752 PFILE_OBJECT FileObject = NULL;
753
754 PDEVICE_OBJECT DeviceObject = NULL;
755
756 PIRP Irp = NULL;
757 PIO_STACK_LOCATION IoStackLocation = NULL;
758 PUCHAR Buffer = NULL;
759
760 LARGE_INTEGER ByteOffset;
761 ULONG ReturnedLength = 0;
762 ULONG Length;
763
764 NTSTATUS Status = STATUS_UNSUCCESSFUL;
765
766 BOOLEAN OpPostIrp = FALSE;
767 BOOLEAN PagingIo = FALSE;
768 BOOLEAN Nocache = FALSE;
769 BOOLEAN SynchronousIo = FALSE;
770
771 BOOLEAN RecursiveWriteThrough = FALSE;
772 BOOLEAN MainResourceAcquired = FALSE;
773 BOOLEAN PagingIoResourceAcquired = FALSE;
774
775 BOOLEAN bDeferred = FALSE;
776 BOOLEAN UpdateFileValidSize = FALSE;
777 BOOLEAN FileSizesChanged = FALSE;
778 BOOLEAN rc;
779
780
781 __try {
782
783 ASSERT(IrpContext);
784 ASSERT((IrpContext->Identifier.Type == EXT2ICX) &&
785 (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT)));
786
787 DeviceObject = IrpContext->DeviceObject;
788 Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension;
789 ASSERT(Vcb != NULL);
790 ASSERT((Vcb->Identifier.Type == EXT2VCB) &&
791 (Vcb->Identifier.Size == sizeof(EXT2_VCB)));
792
793 FileObject = IrpContext->FileObject;
794 Fcb = (PEXT2_FCB) FileObject->FsContext;
795 Ccb = (PEXT2_CCB) FileObject->FsContext2;
796 ASSERT(Fcb);
797 ASSERT((Fcb->Identifier.Type == EXT2FCB) &&
798 (Fcb->Identifier.Size == sizeof(EXT2_FCB)));
799
800 Irp = IrpContext->Irp;
801 IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
802
803 Length = IoStackLocation->Parameters.Write.Length;

Callers 1

Ext2WriteFunction · 0.85

Calls 14

Ext2LockUserBufferFunction · 0.85
Ext2CheckFileAccessFunction · 0.85
Ext2IsFastIoPossibleFunction · 0.85
Ext2ExpandFileFunction · 0.85
Ext2SaveInodeFunction · 0.85
Ext2SaveSuperFunction · 0.85
Ext2GetUserBufferFunction · 0.85
Ext2ZeroDataFunction · 0.85
Ext2StartFloppyFlushDpcFunction · 0.85
Ext2WriteInodeFunction · 0.85
Ext2NotifyReportChangeFunction · 0.85
Ext2QueueRequestFunction · 0.85

Tested by

no test coverage detected