PNTFS_ATTR_RECORD LastAttr;
PNTFS_ATTR_RECORD NonResidentStart;
PNTFS_ATTR_RECORD NonResidentEnd;
+ ULONG Offset;
} FIND_ATTR_CONTXT, *PFIND_ATTR_CONTXT;
+typedef struct
+{
+ USHORT USN;
+ USHORT Array[];
+} FIXUP_ARRAY, *PFIXUP_ARRAY;
+
extern PNTFS_GLOBAL_DATA NtfsGlobalData;
FORCEINLINE
IN LONGLONG StartingOffset,
IN ULONG Length,
IN ULONG SectorSize,
- IN PUCHAR Buffer);
+ IN const PUCHAR Buffer);
NTSTATUS
NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject,
ULONGLONG
AttributeDataLength(PNTFS_ATTR_RECORD AttrRecord);
+NTSTATUS
+SetAttributeDataLength(PFILE_OBJECT FileObject,
+ PNTFS_FCB Fcb,
+ PNTFS_ATTR_CONTEXT AttrContext,
+ ULONG AttrOffset,
+ PFILE_RECORD_HEADER FileRecord,
+ PDEVICE_EXTENSION DeviceExt,
+ PLARGE_INTEGER DataSize);
+
ULONG
AttributeAllocatedLength(PNTFS_ATTR_RECORD AttrRecord);
ULONGLONG index,
PFILE_RECORD_HEADER file);
+NTSTATUS
+UpdateFileRecord(PDEVICE_EXTENSION Vcb,
+ ULONGLONG index,
+ PFILE_RECORD_HEADER file);
+
NTSTATUS
FindAttribute(PDEVICE_EXTENSION Vcb,
PFILE_RECORD_HEADER MftRecord,
ULONG Type,
PCWSTR Name,
ULONG NameLength,
- PNTFS_ATTR_CONTEXT * AttrCtx);
+ PNTFS_ATTR_CONTEXT * AttrCtx,
+ PULONG Offset);
VOID
ReadVCN(PDEVICE_EXTENSION Vcb,
FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb,
PNTFS_RECORD_HEADER Record);
+NTSTATUS
+AddFixupArray(PDEVICE_EXTENSION Vcb,
+ PFILE_RECORD_HEADER Record);
+
NTSTATUS
ReadLCN(PDEVICE_EXTENSION Vcb,
ULONGLONG lcn,