39 Irp = IrpContext->Irp;
44 Irp->IoStatus.Information = 0;
54 IrpContext->Irp =
NULL;
112 Irp = IrpContext->Irp;
113 Irp->IoStatus.Information = 0;
128 Irp->IoStatus.Information = 0;
140 Vcb->PartitionInformation.PartitionLength.QuadPart ) {
141 Irp->IoStatus.Information = 0;
154 if (
Ccb !=
NULL && !PagingIo) {
162 MainResourceAcquired =
TRUE;
174 MainResourceAcquired =
FALSE;
242 Irp = IrpContext->Irp;
250 if (MainResourceAcquired) {
254 if (!IrpContext->ExceptionInProgress) {
301 #define SafeZeroMemory(AT,BYTE_COUNT) { \ 304 RtlZeroMemory((AT), (BYTE_COUNT)); \ 305 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { \ 306 Ext2RaiseStatus( IrpContext, STATUS_INVALID_USER_BUFFER ); \ 350 if (
S_ISLNK(
Mcb->Inode.i_mode) && 0 ==
Mcb->Inode.i_blocks) {
406 }
else if (
Extent->Offset > (Prev->Offset + Prev->Length)) {
518 Irp = IrpContext->Irp;
532 DEBUG(
DL_INF, (
"Ext2ReadFile: reading %wZ Off=%I64xh Len=%xh Paging=%xh Nocache=%xh\n",
547 Irp->IoStatus.Information = 0;
581 PagingIoResourceAcquired =
TRUE;
585 if (Nocache &&
Ccb !=
NULL &&
Fcb->SectionObject.DataSectionObject) {
593 MainResourceAcquired =
TRUE;
621 MainResourceAcquired =
TRUE;
625 &
Fcb->FileLockAnchor,
634 Irp->IoStatus.Information = 0;
765 Irp = IrpContext->Irp;
779 if (PagingIoResourceAcquired) {
783 if (MainResourceAcquired) {
788 if (!OpPostIrp && !IrpContext->ExceptionInProgress) {
825 DEBUG(
DL_IO, (
"Ext2ReadFile: %wZ fetch at Off=%I64xh Len=%xh Paging=%xh Nocache=%xh Returned=%xh Status=%xh\n",
845 Irp = IrpContext->Irp;
853 if (!IrpContext->ExceptionInProgress) {
882 bCompleteRequest =
FALSE;
890 bCompleteRequest =
TRUE;
898 bCompleteRequest =
TRUE;
916 bCompleteRequest =
FALSE;
922 bCompleteRequest =
TRUE;
927 bCompleteRequest =
FALSE;
929 DEBUG(
DL_ERR, (
"Ext2Read: Inavlid FileObject (Vcb or Fcb corrupted)\n"));
933 bCompleteRequest =
TRUE;
938 if (bCompleteRequest) {
struct _EXT2_FCB * PEXT2_FCB
struct _EXT2_EXTENT * Next
#define Ext2DerefMcb(Mcb)
NTSTATUS Ext2Read(IN PEXT2_IRP_CONTEXT IrpContext)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
VOID NTAPI CcMdlRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
#define IsInodeSymLink(I)
#define IRP_CONTEXT_FLAG_WAIT
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define ExConvertExclusiveToShared
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
FSRTL_ADVANCED_FCB_HEADER Header
IN BOOLEAN OUT PSTR Buffer
#define CEILING_ALIGNED(T, A, B)
#define STATUS_INVALID_PARAMETER
#define STATUS_INVALID_DEVICE_REQUEST
#define Ext2ReferMcb(Mcb)
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSTATUS Ext2LockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
#define READ_AHEAD_GRANULARITY
NTSTATUS Ext2FlushVolume(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bShutDown)
NTSTATUS Ext2BuildExtents(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONGLONG Offset, IN ULONG Size, IN BOOLEAN bAlloc, OUT PEXT2_EXTENT *Chain)
#define IsSpecialFile(Fcb)
NTSTATUS Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpContext)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
#define STATUS_END_OF_FILE
EXT2_IDENTIFIER_TYPE Type
#define FO_SYNCHRONOUS_IO
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ PDEVICE_OBJECT DeviceObject
NTFSIDENTIFIER Identifier
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define IO_DISK_INCREMENT
#define FO_FILE_FAST_IO_READ
VOID Ext2FreeIrpContext(IN PEXT2_IRP_CONTEXT IrpContext)
EXT2_IDENTIFIER Identifier
#define STATUS_INVALID_USER_BUFFER
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
NTSTATUS Ext2ReadVolume(IN PEXT2_IRP_CONTEXT IrpContext)
NTSTATUS Ext2ReadComplete(IN PEXT2_IRP_CONTEXT IrpContext)
VOID NTAPI CcMdlReadComplete(IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
#define IsFileDeleted(Mcb)
#define ClearLongFlag(_F, _SF)
FAST_IO_POSSIBLE Ext2IsFastIoPossible(IN PEXT2_FCB Fcb)
#define SafeZeroMemory(AT, BYTE_COUNT)
#define STATUS_FILE_DELETED
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define FILE_USE_FILE_POINTER_POSITION
#define NT_SUCCESS(StatCode)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
BOOLEAN NTAPI FsRtlCheckLockForReadAccess(IN PFILE_LOCK FileLock, IN PIRP Irp)
struct _EXT2_FCBVCB * PEXT2_FCBVCB
#define Ext2CompleteRequest(Irp, bPrint, PriorityBoost)
#define STATUS_ACCESS_DENIED
#define EXT2_LINKLEN_IN_INODE
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define CCB_VOLUME_DASD_PURGE
#define STATUS_UNSUCCESSFUL
BOOLEAN NTAPI CcCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus)
#define VCB_DISMOUNT_PENDING
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
#define FCB_FILE_MODIFIED
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
_In_ ULONG _In_ ULONG Offset
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define Ext2NormalizeAndRaiseStatus(IRPCONTEXT, STATUS)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
#define IRP_CONTEXT_FLAG_REQUEUED
NTSTATUS Ext2ReadInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONGLONG Offset, IN PVOID Buffer, IN ULONG Size, IN BOOLEAN bDirectIo, OUT PULONG BytesRead)
BOOLEAN NTAPI ExAcquireResourceSharedLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
#define VCB_VOLUME_LOCKED
VOID NTAPI Ext2LockIrp(IN PVOID Context, IN PIRP Irp)
NTSTATUS Ext2ReadWriteBlocks(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_EXTENT Extent, IN ULONG Length)
#define STATUS_FILE_LOCK_CONFLICT
#define IsExt2FsDevice(DO)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
ERESOURCE PagingIoResource
#define RtlCopyMemory(Destination, Source, Length)
struct _EXT2_VCB * PEXT2_VCB
NTSTATUS NTAPI FsRtlCheckOplock(IN POPLOCK Oplock, IN PIRP Irp, IN PVOID Context, IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
VOID Ext2DestroyExtentChain(IN PEXT2_EXTENT Chain)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
struct _EXT2_CCB * PEXT2_CCB
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
VOID NTAPI Ext2OplockComplete(IN PVOID Context, IN PIRP Irp)
PVOID Ext2GetUserBuffer(IN PIRP Irp)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
VOID NTAPI CcSetReadAheadGranularity(IN PFILE_OBJECT FileObject, IN ULONG Granularity)