8#define CACHEPAGESIZE(pDeviceExt) \
9 ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \
10 (pDeviceExt)->NtfsInfo.UCHARsPerCluster : PAGE_SIZE)
12#define TAG_NTFS '0ftN'
15#define TAG_IRP_CTXT 'iftN'
16#define TAG_ATT_CTXT 'aftN'
17#define TAG_FILE_REC 'rftN'
18#define TAG_IO_RUNS 'RftN'
20#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
21#define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
23#define DEVICE_NAME L"\\Ntfs"
88#define NTFS_TYPE_CCB '20SF'
89#define NTFS_TYPE_FCB '30SF'
90#define NTFS_TYPE_VCB '50SF'
91#define NTFS_TYPE_IRP_CONTEXT '60SF'
92#define NTFS_TYPE_GLOBAL_DATA '70SF'
146#define VCB_VOLUME_LOCKED 0x0001
148#define VCB_VOLUME_DISMOUNTED 0x0002
167#define CCB_RETURNED_DOT 0x0001
168#define CCB_RETURNED_DOTDOT 0x0002
209#define FILE_RECORD_END 0x11477982
211#define NTFS_FILE_MFT 0
212#define NTFS_FILE_MFTMIRR 1
213#define NTFS_FILE_LOGFILE 2
214#define NTFS_FILE_VOLUME 3
215#define NTFS_FILE_ATTRDEF 4
216#define NTFS_FILE_ROOT 5
217#define NTFS_FILE_BITMAP 6
218#define NTFS_FILE_BOOT 7
219#define NTFS_FILE_BADCLUS 8
220#define NTFS_FILE_QUOTA 9
221#define NTFS_FILE_UPCASE 10
222#define NTFS_FILE_EXTEND 11
223#define NTFS_FILE_FIRST_USER_FILE 16
225#define NTFS_MFT_MASK 0x0000FFFFFFFFFFFFULL
227#define COLLATION_BINARY 0x00
228#define COLLATION_FILE_NAME 0x01
229#define COLLATION_UNICODE_STRING 0x02
230#define COLLATION_NTOFS_ULONG 0x10
231#define COLLATION_NTOFS_SID 0x11
232#define COLLATION_NTOFS_SECURITY_HASH 0x12
233#define COLLATION_NTOFS_ULONGS 0x13
235#define INDEX_ROOT_SMALL 0x0
236#define INDEX_ROOT_LARGE 0x1
238#define INDEX_NODE_SMALL 0x0
239#define INDEX_NODE_LARGE 0x1
241#define NTFS_INDEX_ENTRY_NODE 1
242#define NTFS_INDEX_ENTRY_END 2
244#define NTFS_FILE_NAME_POSIX 0
245#define NTFS_FILE_NAME_WIN32 1
246#define NTFS_FILE_NAME_DOS 2
247#define NTFS_FILE_NAME_WIN32_AND_DOS 3
249#define NTFS_FILE_TYPE_READ_ONLY 0x1
250#define NTFS_FILE_TYPE_HIDDEN 0x2
251#define NTFS_FILE_TYPE_SYSTEM 0x4
252#define NTFS_FILE_TYPE_ARCHIVE 0x20
253#define NTFS_FILE_TYPE_TEMPORARY 0x100
254#define NTFS_FILE_TYPE_SPARSE 0x200
255#define NTFS_FILE_TYPE_REPARSE 0x400
256#define NTFS_FILE_TYPE_COMPRESSED 0x800
257#define NTFS_FILE_TYPE_OFFLINE 0x1000
258#define NTFS_FILE_TYPE_ENCRYPTED 0x4000
259#define NTFS_FILE_TYPE_DIRECTORY 0x10000000
262#define NTFS_ATTR_COMPRESSION_MASK 0x00FF
263#define NTFS_ATTR_SPARSE 0x8000
266#define RA_INDEXED 0x01
277#define NRH_FILE_TYPE 0x454C4946
278#define NRH_INDX_TYPE 0x58444E49
298#define FRH_IN_USE 0x0001
299#define FRH_DIRECTORY 0x0002
300#define FRH_UNKNOWN1 0x0004
301#define FRH_UNKNOWN2 0x0008
327 USHORT MappingPairsOffset;
351#define ATTR_RECORD_ALIGNMENT 8
354#define DATA_RUN_ALIGNMENT 4
357#define VALUE_OFFSET_ALIGNMENT 4
505#define IRPCONTEXT_CANWAIT 0x1
506#define IRPCONTEXT_COMPLETE 0x2
507#define IRPCONTEXT_QUEUE 0x4
510#define NTFS_SPARSE_LBO ((LONGLONG)-1)
513#define NTFS_MAX_IO_RUNS_ON_STACK 8
583#define FCB_CACHE_INITIALIZED 0x0001
584#define FCB_IS_VOLUME_STREAM 0x0002
585#define FCB_IS_VOLUME 0x0004
586#define FCB_DELETE_PENDING 0x0008
587#define FCB_DELETED 0x0010
656 *
Flags &= ~IRPCONTEXT_COMPLETE;
790 ULONG ClustersToFree);
918 ULONG IndexBufferSize,
933 ULONG MaxIndexRootSize,
934 ULONG IndexRecordSize,
953 ULONG IndexBufferSize,
960 ULONG IndexBufferSize,
962 ULONG IndexAllocationOffset);
1258 ULONG FirstAttributeOffset,
1332#define NTFS_FILENAME_UPDATE_SIZES 0x1
1333#define NTFS_FILENAME_UPDATE_TIMES 0x2
1334#define NTFS_FILENAME_UPDATE_ATTRS 0x4
1358 ULONG IndexBlockSize,
1513 ULONG FirstDesiredCluster,
1514 ULONG DesiredClusters,
1515 PULONG FirstAssignedCluster,
1516 PULONG AssignedClusters);
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 NameType
struct NTFS_ATTR_RECORD * PNTFS_ATTR_RECORD
struct NTFS_ATTR_CONTEXT * PNTFS_ATTR_CONTEXT
_In_ PFCB _In_ LONGLONG StartingOffset
_In_ ULONG InputBufferSize
_In_ ULONG _In_ ULONG OutputBufferSize
_In_ ULONG AllocationSize
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible
struct _NTFS_INFO NTFS_INFO
struct FIXUP_ARRAY * PFIXUP_ARRAY
struct DEVICE_EXTENSION * PDEVICE_EXTENSION
struct INDEX_BUFFER * PINDEX_BUFFER
FORCEINLINE NTSTATUS NtfsMarkIrpContextForQueue(PNTFS_IRP_CONTEXT IrpContext)
VOID NtfsDumpData(ULONG_PTR Buffer, ULONG Length)
ULONGLONG NtfsGetFileSize(PDEVICE_EXTENSION DeviceExt, PFILE_RECORD_HEADER FileRecord, PCWSTR Stream, ULONG StreamLength, PULONGLONG AllocatedSize)
NTSTATUS NtfsPerformIoRuns(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MajorFunction, IN ULONG SectorSize, IN OUT PUCHAR Buffer, IN PNTFS_IO_RUN_LIST RunList, IN BOOLEAN Override, OUT PULONG BytesTransferred OPTIONAL)
BOOLEAN NTAPI NtfsAcqReadAhead(PVOID Context, BOOLEAN Wait)
struct _NTFS_IO_RUN * PNTFS_IO_RUN
NTSTATUS AddRun(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONGLONG NextAssignedCluster, ULONG RunLength)
NTSTATUS NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext)
PSTANDARD_INFORMATION GetStandardInformationFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
VOID DumpBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, ULONG Number, ULONG Depth)
struct _NTFS_IO_RUN NTFS_IO_RUN
BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb)
struct _B_TREE_KEY * PB_TREE_KEY
enum ATTRIBUTE_TYPE * PATTRIBUTE_TYPE
PNTFS_GLOBAL_DATA NtfsGlobalData
NTSTATUS ReadFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG index, PFILE_RECORD_HEADER file)
struct FILENAME_ATTRIBUTE * PFILENAME_ATTRIBUTE
NTSTATUS ConvertLargeMCBToDataRuns(PLARGE_MCB DataRunsMCB, ULONGLONG VcnCount, PUCHAR RunBuffer, ULONG MaxBufferSize, PULONG UsedBufferSize)
PUCHAR DecodeRun(PUCHAR DataRun, LONGLONG *DataRunOffset, ULONGLONG *DataRunLength)
NTSTATUS GetLastClusterInDataRun(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_RECORD Attribute, PULONGLONG LastCluster)
NTSTATUS NtfsReadFCBAttribute(PNTFS_VCB Vcb, PNTFS_FCB pFCB, ULONG Type, PCWSTR Name, ULONG NameLength, PVOID *Data)
PNTFS_FCB NtfsGrabFCBFromTable(PNTFS_VCB Vcb, PCWSTR FileName)
VOID DestroyBTreeNode(PB_TREE_FILENAME_NODE Node)
NTSTATUS AddIndexRoot(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PINDEX_ROOT_ATTRIBUTE NewIndexRoot, ULONG RootLength, PCWSTR Name, USHORT NameLength)
struct _NTFS_FILENAME_UPDATE * PNTFS_FILENAME_UPDATE
NTSTATUS ConvertDataRunsToLargeMCB(PUCHAR DataRun, PLARGE_MCB DataRunsMCB, PULONGLONG pNextVBN)
BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb)
NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
struct REPARSE_POINT_ATTRIBUTE * PREPARSE_POINT_ATTRIBUTE
struct INDEX_ENTRY_ATTRIBUTE * PINDEX_ENTRY_ATTRIBUTE
NTSTATUS NtfsLookupFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING PathName, BOOLEAN CaseSensitive, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex)
NTSTATUS UpdateFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MftIndex, PFILE_RECORD_HEADER FileRecord)
NTSTATUS NtfsWriteVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt, _In_ ULONG FirstCluster, _In_ ULONG ClusterCount)
NTSTATUS NtfsFlushDevice(IN PDEVICE_OBJECT DeviceObject)
VOID ReadVCN(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER file, ATTRIBUTE_TYPE type, ULONGLONG vcn, ULONG count, PVOID buffer)
VOID NtfsDumpDataRuns(PVOID StartOfRun, ULONGLONG CurrentLCN)
NTSTATUS NtfsUpdateDuplicatedInformation(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, ULONGLONG MFTIndex, ULONG Flags, BOOLEAN CaseSensitive)
NTSTATUS CreateBTreeFromIndex(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecordWithIndex, PNTFS_ATTR_CONTEXT IndexRootContext, PINDEX_ROOT_ATTRIBUTE IndexRoot, PB_TREE *NewTree)
NTSTATUS NtfsLookupFile(PDEVICE_EXTENSION Vcb, PUNICODE_STRING PathName, BOOLEAN CaseSensitive, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex)
VOID ReleaseAttributeContext(PNTFS_ATTR_CONTEXT Context)
struct _NTFS_IO_RUN_LIST NTFS_IO_RUN_LIST
NTSTATUS NtfsRemoveKey(PB_TREE_FILENAME_NODE Node, PB_TREE_KEY SearchKey, BOOLEAN CaseSensitive)
ULONG GetFileNameAttributeLength(PFILENAME_ATTRIBUTE FileNameAttribute)
NTSTATUS NtfsIsDirectoryEmpty(_In_ PDEVICE_EXTENSION Vcb, _In_ ULONGLONG MftIndex, _Out_ PBOOLEAN Empty)
VOID NtfsFileFlagsToAttributes(ULONG NtfsAttributes, PULONG FileAttributes)
DRIVER_DISPATCH NtfsFsdDispatch
NTSTATUS NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
FAST_IO_READ NtfsFastIoRead
struct NTFS_CCB * PNTFS_CCB
NTSTATUS NTAPI NtfsLockControl(_In_ PNTFS_IRP_CONTEXT IrpContext)
struct _BIOS_PARAMETERS_BLOCK BIOS_PARAMETERS_BLOCK
NTSTATUS NtfsLoadVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt)
NTSTATUS FindFirstAttribute(PFIND_ATTR_CONTXT Context, PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, BOOLEAN OnlyResident, PNTFS_ATTR_RECORD *Attribute)
LONG CompareTreeKeys(PB_TREE_KEY Key1, PB_TREE_KEY Key2, BOOLEAN CaseSensitive)
NTSTATUS SplitBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, PB_TREE_KEY *MedianKey, PB_TREE_FILENAME_NODE *NewRightHandSibling, BOOLEAN CaseSensitive)
struct NTFS_IRP_CONTEXT * PNTFS_IRP_CONTEXT
VOID DestroyBTreeKey(PB_TREE_KEY Key)
NTSTATUS NtfsRemoveFilenameFromDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
struct _FIND_ATTR_CONTXT * PFIND_ATTR_CONTXT
struct _NTFS_IO_RUN_LIST * PNTFS_IO_RUN_LIST
struct _BOOT_SECTOR * PBOOT_SECTOR
DRIVER_INITIALIZE DriverEntry
NTSTATUS WriteAttributeFromIrp(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, const PUCHAR Buffer, ULONG Length, PULONG LengthWritten, PFILE_RECORD_HEADER FileRecord, PIRP Irp)
struct STANDARD_INFORMATION * PSTANDARD_INFORMATION
NTSTATUS NtfsExtendAllocation(_In_ PDEVICE_EXTENSION Vcb, _In_ PNTFS_ATTR_CONTEXT AttrContext, _In_ ULONG AttrOffset, _In_ PFILE_RECORD_HEADER FileRecord, _In_ ULONGLONG AllocationSize)
struct _B_TREE_FILENAME_NODE * PB_TREE_FILENAME_NODE
NTSTATUS FindFirstAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
NTSTATUS NtfsDeleteFileRecord(PDEVICE_EXTENSION DeviceExt, ULONGLONG MftIndex, BOOLEAN CaseSensitive)
NTSTATUS FreeClusters(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONG ClustersToFree)
BOOLEAN NtfsIsIrpTopLevel(PIRP Irp)
struct DEVICE_EXTENSION NTFS_VCB
PNTFS_IRP_CONTEXT NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS AddFileName(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, PULONGLONG ParentMftIndex)
struct NTFS_RECORD_HEADER * PNTFS_RECORD_HEADER
VOID FindCloseAttribute(PFIND_ATTR_CONTXT Context)
VOID NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
NTSTATUS UpdateMftMirror(PNTFS_VCB Vcb)
ULONGLONG GetIndexEntryVCN(PINDEX_ENTRY_ATTRIBUTE IndexEntry)
NTSTATUS NtfsInsertKey(PB_TREE Tree, ULONGLONG FileReference, PFILENAME_ATTRIBUTE FileNameAttribute, PB_TREE_FILENAME_NODE Node, BOOLEAN CaseSensitive, ULONG MaxIndexRootSize, ULONG IndexRecordSize, PB_TREE_KEY *MedianKey, PB_TREE_FILENAME_NODE *NewRightHandSibling)
NTSTATUS NtfsClose(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS AddBitmap(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
PNTFS_ATTR_CONTEXT PrepareAttributeContext(PNTFS_ATTR_RECORD AttrRecord)
BOOLEAN NtfsFCBIsReparsePoint(PNTFS_FCB Fcb)
ULONGLONG AttributeDataLength(PNTFS_ATTR_RECORD AttrRecord)
struct _FIND_ATTR_CONTXT FIND_ATTR_CONTXT
PFILENAME_ATTRIBUTE GetFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, UCHAR NameType)
NTSTATUS AddIndexAllocation(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
NTSTATUS NtfsSetEndOfFile(PNTFS_FCB Fcb, PFILE_OBJECT FileObject, PDEVICE_EXTENSION DeviceExt, ULONG IrpFlags, BOOLEAN CaseSensitive, PLARGE_INTEGER NewFileSize)
NTSTATUS UpdateIndexEntryFileName(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER MftRecord, PCHAR IndexRecord, ULONG IndexBlockSize, PINDEX_ENTRY_ATTRIBUTE FirstEntry, PINDEX_ENTRY_ATTRIBUTE LastEntry, PUNICODE_STRING FileName, PULONG StartEntry, PULONG CurrentEntry, BOOLEAN DirSearch, PNTFS_FILENAME_UPDATE Update, BOOLEAN CaseSensitive)
NTSTATUS FindAttribute(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER MftRecord, ULONG Type, PCWSTR Name, ULONG NameLength, PNTFS_ATTR_CONTEXT *AttrCtx, PULONG Offset)
ULONG ReadAttribute(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length)
struct VOLINFO_ATTRIBUTE * PVOLINFO_ATTRIBUTE
VOID SetFileRecordEnd(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttrEnd, ULONG EndMarker)
NTSTATUS NtfsQueryInformation(PNTFS_IRP_CONTEXT IrpContext)
struct _NTFS_IO_CONTEXT * PNTFS_IO_CONTEXT
ULONGLONG GetAllocationOffsetFromVCN(PDEVICE_EXTENSION DeviceExt, ULONG IndexBufferSize, ULONGLONG Vcn)
NTSTATUS UpdateIndexAllocation(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG IndexBufferSize, PFILE_RECORD_HEADER FileRecord)
ULONGLONG NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt)
NTSTATUS NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb, PNTFS_FCB DirectoryFCB, PUNICODE_STRING Name, PCWSTR Stream, PFILE_RECORD_HEADER Record, ULONGLONG MFTIndex, PNTFS_FCB *fileFCB)
BOOLEAN NTAPI NtfsAcqLazyWrite(PVOID Context, BOOLEAN Wait)
VOID DestroyBTree(PB_TREE Tree)
NTSTATUS NtfsCreateFileRecord(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
NTSTATUS AddFixupArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
NTSTATUS NtfsLockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
NTSTATUS NtfsFlushBuffers(PNTFS_IRP_CONTEXT IrpContext)
struct _BIOS_PARAMETERS_BLOCK * PBIOS_PARAMETERS_BLOCK
VOID NtfsFreeIoRunList(IN OUT PNTFS_IO_RUN_LIST RunList)
NTSTATUS DemoteBTreeRoot(PB_TREE Tree)
NTSTATUS SetNonResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
PNTFS_ATTR_RECORD MoveAttributes(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_RECORD FirstAttributeToMove, ULONG FirstAttributeOffset, ULONG_PTR MoveTo)
ULONG GetSizeOfIndexEntries(PB_TREE_FILENAME_NODE Node)
struct INDEX_ROOT_ATTRIBUTE * PINDEX_ROOT_ATTRIBUTE
NTSTATUS NtfsRead(PNTFS_IRP_CONTEXT IrpContext)
VOID NtfsRemoveFCBFromTable(_In_ PNTFS_VCB Vcb, _In_ PNTFS_FCB Fcb)
NTSTATUS UpdateFileNameRecord(PDEVICE_EXTENSION Vcb, ULONGLONG ParentMFTIndex, PUNICODE_STRING FileName, BOOLEAN DirSearch, PNTFS_FILENAME_UPDATE Update, BOOLEAN CaseSensitive)
VOID DumpBTree(PB_TREE Tree)
NTSTATUS NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS NtfsWrite(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS CreateEmptyBTree(PB_TREE *NewTree)
VOID NtfsDumpFileAttributes(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
NTSTATUS NtfsAddFilenameToDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, ULONGLONG FileReferenceNumber, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
struct DEVICE_EXTENSION * PNTFS_VCB
struct _NTFS_IO_CONTEXT NTFS_IO_CONTEXT
NTSTATUS AddData(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
NTSTATUS NtfsResizeAllocation(_In_ PNTFS_FCB Fcb, _In_ PFILE_OBJECT FileObject, _In_ BOOLEAN CaseSensitive, _In_ ULONGLONG AllocationSize)
#define NTFS_MAX_IO_RUNS_ON_STACK
VOID NTAPI NtfsRelLazyWrite(PVOID Context)
VOID EnumerAttribute(PFILE_RECORD_HEADER file, PDEVICE_EXTENSION Vcb, PDEVICE_OBJECT DeviceObject)
ULONGLONG AttributeAllocatedLength(PNTFS_ATTR_RECORD AttrRecord)
struct _EXTENDED_BIOS_PARAMETERS_BLOCK * PEXTENDED_BIOS_PARAMETERS_BLOCK
NTSTATUS AddNewMftEntry(PFILE_RECORD_HEADER FileRecord, PDEVICE_EXTENSION DeviceExt, PULONGLONG DestinationIndex, BOOLEAN CanWait)
struct NTFS_ATTRIBUTE_LIST_ITEM * PNTFS_ATTRIBUTE_LIST_ITEM
@ AttributeStandardInformation
@ AttributeVolumeInformation
@ AttributeSecurityDescriptor
@ AttributeIndexAllocation
@ AttributeLoggedUtilityStream
NTSTATUS CreateIndexRootFromBTree(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG MaxIndexSize, PINDEX_ROOT_ATTRIBUTE *IndexRoot, ULONG *Length)
BOOLEAN NtfsFCBIsEncrypted(PNTFS_FCB Fcb)
NTSTATUS NtfsQueryVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS NtfsSetVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
VOID NtfsFreeVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt)
VOID NtfsDumpFileRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
NTSTATUS NtfsWriteDisk(IN PDEVICE_OBJECT DeviceObject, IN LONGLONG StartingOffset, IN ULONG Length, IN ULONG SectorSize, IN const PUCHAR Buffer)
NTSTATUS NtfsAddIoRun(IN OUT PNTFS_IO_RUN_LIST RunList, IN LONGLONG Lbo, IN ULONG ByteCount)
NTSTATUS NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext)
PNTFS_FCB NtfsCreateFCB(PCWSTR FileName, PCWSTR Stream, PNTFS_VCB Vcb)
BOOLEAN NTAPI NtfsIsRegularFileObject(_In_ PFILE_OBJECT FileObject)
struct _B_TREE_KEY B_TREE_KEY
NTSTATUS NtfsAttachFCBToFileObject(PNTFS_VCB Vcb, PNTFS_FCB Fcb, PFILE_OBJECT FileObject)
NTSTATUS NtfsCreateDirectory(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
struct _NTFS_FILENAME_UPDATE NTFS_FILENAME_UPDATE
NTSTATUS NtfsCreate(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, IN ULONG DiskSector, IN ULONG SectorCount, IN ULONG SectorSize, IN OUT PUCHAR Buffer, IN BOOLEAN Override)
BOOLEAN CompareFileName(PDEVICE_EXTENSION Vcb, PUNICODE_STRING FileName, PINDEX_ENTRY_ATTRIBUTE IndexEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive)
ULONG ReadAttributeToIrp(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length, PIRP Irp)
NTSTATUS NtfsDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN ULONG ControlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG OutputBufferSize, IN BOOLEAN Override)
NTSTATUS FreeMftEntry(PDEVICE_EXTENSION DeviceExt, ULONGLONG MftIndex)
NTSTATUS SetResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
NTSTATUS NtfsFindMftRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MFTIndex, PUNICODE_STRING FileName, PULONG FirstEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive, ULONGLONG *OutMFTIndex)
NTSTATUS WriteAttribute(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, const PUCHAR Buffer, ULONG Length, PULONG LengthWritten, PFILE_RECORD_HEADER FileRecord)
NTSTATUS NtfsTrimAllocation(_In_ PNTFS_FCB Fcb)
NTSTATUS ReadLCN(PDEVICE_EXTENSION Vcb, ULONGLONG lcn, ULONG count, PVOID buffer)
struct _FILE_RECORD_HEADER * PFILE_RECORD_HEADER
NTSTATUS NtfsLoadUpCaseTable(PDEVICE_EXTENSION Vcb)
BOOLEAN NtfsFCBIsCompressed(PNTFS_FCB Fcb)
VOID NTAPI NtfsRelReadAhead(PVOID Context)
struct NTFS_GLOBAL_DATA * PNTFS_GLOBAL_DATA
PB_TREE_KEY CreateBTreeKeyFromFilename(ULONGLONG FileReference, PFILENAME_ATTRIBUTE FileNameAttribute)
NTSTATUS FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
NTSTATUS NtfsCleanup(PNTFS_IRP_CONTEXT IrpContext)
NTSTATUS FindNextAttribute(PFIND_ATTR_CONTXT Context, PNTFS_ATTR_RECORD *Attribute)
NTSTATUS InternalSetResidentAttributeLength(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_CONTEXT AttrContext, PFILE_RECORD_HEADER FileRecord, ULONG AttrOffset, ULONG DataSize)
VOID NtfsDestroyFCB(PNTFS_FCB Fcb)
NTSTATUS NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pParentFCB, PNTFS_FCB *pFCB, PCWSTR pFileName, BOOLEAN CaseSensitive)
PNTFS_FCB NtfsOpenRootFCB(PNTFS_VCB Vcb)
NTSTATUS NtfsFindFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING SearchPattern, PULONG FirstEntry, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex, BOOLEAN CaseSensitive)
NTSTATUS NtfsSetInformation(PNTFS_IRP_CONTEXT IrpContext)
PVOID NtfsGetUserBuffer(PIRP Irp, BOOLEAN Paging)
NTSTATUS FindNextAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
UCHAR GetPackedByteCount(LONGLONG NumberToPack, BOOLEAN IsSigned)
struct _EXTENDED_BIOS_PARAMETERS_BLOCK EXTENDED_BIOS_PARAMETERS_BLOCK
struct _B_TREE_FILENAME_NODE B_TREE_FILENAME_NODE
VOID NtfsGrabFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
struct NTFSIDENTIFIER * PNTFSIDENTIFIER
struct ATTRIBUTE_LIST * PATTRIBUTE_LIST
VOID NtfsAddFCBToTable(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
NTSTATUS UpdateIndexNode(PDEVICE_EXTENSION DeviceExt, PFILE_RECORD_HEADER FileRecord, PB_TREE_FILENAME_NODE Node, ULONG IndexBufferSize, PNTFS_ATTR_CONTEXT IndexAllocationContext, ULONG IndexAllocationOffset)
VOID NtfsInitIoRunList(OUT PNTFS_IO_RUN_LIST RunList)
FAST_IO_WRITE NtfsFastIoWrite
struct _FILE_RECORD_HEADER FILE_RECORD_HEADER
VOID NtfsReleaseFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
NTSTATUS AddStandardInformation(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
NTSTATUS NtfsPerformIrpIoRuns(IN PDEVICE_OBJECT DeviceObject, IN UCHAR MajorFunction, IN ULONG SectorSize, IN PIRP Irp, IN OUT PUCHAR Buffer, IN PNTFS_IO_RUN_LIST RunList, IN BOOLEAN Override, OUT PULONG BytesTransferred)
NTSTATUS NtfsAllocateClusters(PDEVICE_EXTENSION DeviceExt, ULONG FirstDesiredCluster, ULONG DesiredClusters, PULONG FirstAssignedCluster, PULONG AssignedClusters)
struct _BOOT_SECTOR BOOT_SECTOR
struct INDEX_HEADER_ATTRIBUTE * PINDEX_HEADER_ATTRIBUTE
PNTFS_FCB NtfsMakeRootFCB(PNTFS_VCB Vcb)
VOID DumpBTreeKey(PB_TREE Tree, PB_TREE_KEY Key, ULONG Number, ULONG Depth)
NTSTATUS NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, IN LONGLONG StartingOffset, IN ULONG Length, IN ULONG SectorSize, IN OUT PUCHAR Buffer, IN BOOLEAN Override)
struct _NTFS_INFO * PNTFS_INFO
PFILE_RECORD_HEADER NtfsCreateEmptyFileRecord(PDEVICE_EXTENSION DeviceExt)
NTSTATUS SetAttributeDataLength(PFILE_OBJECT FileObject, PNTFS_FCB Fcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
IN PFCB IN VBO OUT PLBO Lbo
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_In_ BOOLEAN _In_ USHORT Directory
DRIVER_DISPATCH(nfs41_FsdDispatch)
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
PULONG MinorVersion OPTIONAL
ATTRIBUTE_TYPE AttributeType
ULONGLONG FileReferenceNumber
PB_TREE_FILENAME_NODE RootNode
struct _FILE_RECORD_HEADER * MasterFileTable
struct _NTFS_ATTR_CONTEXT * MFTContext
struct _NTFS_ATTR_CONTEXT * BitmapContext
PFILE_OBJECT StreamFileObject
PDEVICE_OBJECT StorageDevice
ULONGLONG FreeClusterCount
NPAGED_LOOKASIDE_LIST FileRecLookasideList
NTFSIDENTIFIER Identifier
ULONGLONG DirectoryFileReferenceNumber
USHORT AlignmentOrReserved
INDEX_HEADER_ATTRIBUTE Header
FILENAME_ATTRIBUTE FileName
INDEX_HEADER_ATTRIBUTE Header
UCHAR ClustersPerIndexRecord
PFILE_OBJECT PtrFileObject
NTFSIDENTIFIER Identifier
PWCHAR DirectorySearchPattern
LARGE_INTEGER CurrentByteOffset
NPAGED_LOOKASIDE_LIST FcbLookasideList
FAST_IO_DISPATCH FastIoDispatch
BOOLEAN EnableWriteSupport
NPAGED_LOOKASIDE_LIST AttrCtxtLookasideList
PDEVICE_OBJECT DeviceObject
NPAGED_LOOKASIDE_LIST IrpContextLookasideList
NTFSIDENTIFIER Identifier
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks
PDRIVER_OBJECT DriverObject
NTFSIDENTIFIER Identifier
NTSTATUS SavedExceptionCode
WORK_QUEUE_ITEM WorkQueueItem
PDEVICE_OBJECT DeviceObject
BIOS_PARAMETERS_BLOCK BPB
EXTENDED_BIOS_PARAMETERS_BLOCK EBPB
BOOLEAN DiskNeedsUpdating
struct _B_TREE_KEY * NextKey
B_TREE_FILENAME_NODE * LesserChild
PINDEX_ENTRY_ATTRIBUTE IndexEntry
ULONGLONG MftMirrLocation
CHAR ClustersPerMftRecord
CHAR ClustersPerIndexRecord
FSRTL_COMMON_FCB_HEADER RFCB
ERESOURCE PagingIoResource
NTFSIDENTIFIER Identifier
SECTION_OBJECT_POINTERS SectionObjectPointers
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentStart
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentEnd
PNTFS_ATTR_RECORD FirstAttr
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentCur
PNTFS_ATTR_RECORD LastAttr
PNTFS_ATTR_RECORD CurrAttr
PNTFS_ATTR_RECORD pRecord
LONGLONG CacheRunStartLCN
ULONGLONG FileOwnerMFTIndex
ULONGLONG CacheRunCurrentOffset
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH]
ULONG BytesPerIndexRecord
ULARGE_INTEGER MftMirrStart
volatile LONG BytesTransferred
NTFS_IO_RUN StackRuns[NTFS_MAX_IO_RUNS_ON_STACK]
#define MAXIMUM_VOLUME_LABEL_LENGTH
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR _Out_opt_ PULONG BytesTransferred
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
_Reserved_ PVOID Reserved
_IRQL_requires_same_ typedef _In_ ULONG ControlCode
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
enum _LOCK_OPERATION LOCK_OPERATION
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
_In_opt_ PLARGE_INTEGER NewFileSize