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'
19#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
20#define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
22#define DEVICE_NAME L"\\Ntfs"
87#define NTFS_TYPE_CCB '20SF'
88#define NTFS_TYPE_FCB '30SF'
89#define NTFS_TYPE_VCB '50SF'
90#define NTFS_TYPE_IRP_CONTEXT '60SF'
91#define NTFS_TYPE_GLOBAL_DATA '70SF'
127#define VCB_VOLUME_LOCKED 0x0001
182#define FILE_RECORD_END 0x11477982
184#define NTFS_FILE_MFT 0
185#define NTFS_FILE_MFTMIRR 1
186#define NTFS_FILE_LOGFILE 2
187#define NTFS_FILE_VOLUME 3
188#define NTFS_FILE_ATTRDEF 4
189#define NTFS_FILE_ROOT 5
190#define NTFS_FILE_BITMAP 6
191#define NTFS_FILE_BOOT 7
192#define NTFS_FILE_BADCLUS 8
193#define NTFS_FILE_QUOTA 9
194#define NTFS_FILE_UPCASE 10
195#define NTFS_FILE_EXTEND 11
196#define NTFS_FILE_FIRST_USER_FILE 16
198#define NTFS_MFT_MASK 0x0000FFFFFFFFFFFFULL
200#define COLLATION_BINARY 0x00
201#define COLLATION_FILE_NAME 0x01
202#define COLLATION_UNICODE_STRING 0x02
203#define COLLATION_NTOFS_ULONG 0x10
204#define COLLATION_NTOFS_SID 0x11
205#define COLLATION_NTOFS_SECURITY_HASH 0x12
206#define COLLATION_NTOFS_ULONGS 0x13
208#define INDEX_ROOT_SMALL 0x0
209#define INDEX_ROOT_LARGE 0x1
211#define INDEX_NODE_SMALL 0x0
212#define INDEX_NODE_LARGE 0x1
214#define NTFS_INDEX_ENTRY_NODE 1
215#define NTFS_INDEX_ENTRY_END 2
217#define NTFS_FILE_NAME_POSIX 0
218#define NTFS_FILE_NAME_WIN32 1
219#define NTFS_FILE_NAME_DOS 2
220#define NTFS_FILE_NAME_WIN32_AND_DOS 3
222#define NTFS_FILE_TYPE_READ_ONLY 0x1
223#define NTFS_FILE_TYPE_HIDDEN 0x2
224#define NTFS_FILE_TYPE_SYSTEM 0x4
225#define NTFS_FILE_TYPE_ARCHIVE 0x20
226#define NTFS_FILE_TYPE_TEMPORARY 0x100
227#define NTFS_FILE_TYPE_SPARSE 0x200
228#define NTFS_FILE_TYPE_REPARSE 0x400
229#define NTFS_FILE_TYPE_COMPRESSED 0x800
230#define NTFS_FILE_TYPE_OFFLINE 0x1000
231#define NTFS_FILE_TYPE_ENCRYPTED 0x4000
232#define NTFS_FILE_TYPE_DIRECTORY 0x10000000
235#define RA_INDEXED 0x01
246#define NRH_FILE_TYPE 0x454C4946
247#define NRH_INDX_TYPE 0x58444E49
267#define FRH_IN_USE 0x0001
268#define FRH_DIRECTORY 0x0002
269#define FRH_UNKNOWN1 0x0004
270#define FRH_UNKNOWN2 0x0008
296 USHORT MappingPairsOffset;
320#define ATTR_RECORD_ALIGNMENT 8
323#define DATA_RUN_ALIGNMENT 4
326#define VALUE_OFFSET_ALIGNMENT 4
474#define IRPCONTEXT_CANWAIT 0x1
475#define IRPCONTEXT_COMPLETE 0x2
476#define IRPCONTEXT_QUEUE 0x4
508#define FCB_CACHE_INITIALIZED 0x0001
509#define FCB_IS_VOLUME_STREAM 0x0002
510#define FCB_IS_VOLUME 0x0004
573 *
Flags &= ~IRPCONTEXT_COMPLETE;
706 ULONG ClustersToFree);
794 ULONG IndexBufferSize,
809 ULONG MaxIndexRootSize,
810 ULONG IndexRecordSize,
824 ULONG IndexBufferSize,
831 ULONG IndexBufferSize,
833 ULONG IndexAllocationOffset);
1074 ULONG FirstAttributeOffset,
1125 ULONG IndexBlockSize,
1269 ULONG FirstDesiredCluster,
1270 ULONG DesiredClusters,
1271 PULONG FirstAssignedCluster,
1272 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
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)
BOOLEAN NTAPI NtfsAcqReadAhead(PVOID Context, BOOLEAN Wait)
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)
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
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)
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)
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 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)
ULONG GetFileNameAttributeLength(PFILENAME_ATTRIBUTE FileNameAttribute)
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
struct _BIOS_PARAMETERS_BLOCK BIOS_PARAMETERS_BLOCK
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
struct _FIND_ATTR_CONTXT * PFIND_ATTR_CONTXT
struct _BOOT_SECTOR * PBOOT_SECTOR
DRIVER_INITIALIZE DriverEntry
struct STANDARD_INFORMATION * PSTANDARD_INFORMATION
struct _B_TREE_FILENAME_NODE * PB_TREE_FILENAME_NODE
NTSTATUS FindFirstAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
NTSTATUS FreeClusters(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONG ClustersToFree)
BOOLEAN NtfsIsIrpTopLevel(PIRP Irp)
NTSTATUS UpdateFileNameRecord(PDEVICE_EXTENSION Vcb, ULONGLONG ParentMFTIndex, PUNICODE_STRING FileName, BOOLEAN DirSearch, ULONGLONG NewDataSize, ULONGLONG NewAllocationSize, BOOLEAN CaseSensitive)
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 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)
NTSTATUS ConvertLargeMCBToDataRuns(PLARGE_MCB DataRunsMCB, PUCHAR RunBuffer, ULONG MaxBufferSize, PULONG UsedBufferSize)
struct VOLINFO_ATTRIBUTE * PVOLINFO_ATTRIBUTE
VOID SetFileRecordEnd(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttrEnd, ULONG EndMarker)
NTSTATUS NtfsQueryInformation(PNTFS_IRP_CONTEXT IrpContext)
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)
struct _BIOS_PARAMETERS_BLOCK * PBIOS_PARAMETERS_BLOCK
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 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
NTSTATUS AddData(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
NTSTATUS UpdateIndexEntryFileNameSize(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, ULONGLONG NewDataSize, ULONGLONG NewAllocatedSize, BOOLEAN CaseSensitive)
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 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 NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext)
PNTFS_FCB NtfsCreateFCB(PCWSTR FileName, PCWSTR Stream, PNTFS_VCB Vcb)
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)
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)
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 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 ReadLCN(PDEVICE_EXTENSION Vcb, ULONGLONG lcn, ULONG count, PVOID buffer)
struct _FILE_RECORD_HEADER * PFILE_RECORD_HEADER
BOOLEAN NtfsFCBIsCompressed(PNTFS_FCB Fcb)
VOID NTAPI NtfsRelReadAhead(PVOID Context)
struct NTFS_GLOBAL_DATA * PNTFS_GLOBAL_DATA
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)
FAST_IO_WRITE NtfsFastIoWrite
struct _FILE_RECORD_HEADER FILE_RECORD_HEADER
VOID NtfsReleaseFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
BOOLEAN CompareFileName(PUNICODE_STRING FileName, PINDEX_ENTRY_ATTRIBUTE IndexEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive)
PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
NTSTATUS AddStandardInformation(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
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)
_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 GLenum type
GLuint GLuint GLsizei count
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
DRIVER_DISPATCH(nfs41_FsdDispatch)
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
ATTRIBUTE_TYPE AttributeType
ULONGLONG FileReferenceNumber
PB_TREE_FILENAME_NODE RootNode
struct _FILE_RECORD_HEADER * MasterFileTable
struct _NTFS_ATTR_CONTEXT * MFTContext
PFILE_OBJECT StreamFileObject
PDEVICE_OBJECT StorageDevice
NPAGED_LOOKASIDE_LIST FileRecLookasideList
NTFSIDENTIFIER Identifier
base for all directory entries
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
_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_ 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
_Must_inspect_result_ _In_ ULONG Flags
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
#define MAXIMUM_VOLUME_LABEL_LENGTH
enum _LOCK_OPERATION LOCK_OPERATION
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
_In_opt_ PLARGE_INTEGER NewFileSize