ReactOS  0.4.15-dev-3308-g9455def
ntfs.h
Go to the documentation of this file.
1 #ifndef NTFS_H
2 #define NTFS_H
3 
4 #include <ntifs.h>
5 #include <pseh/pseh2.h>
6 #include <section_attribs.h>
7 
8 #define CACHEPAGESIZE(pDeviceExt) \
9  ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \
10  (pDeviceExt)->NtfsInfo.UCHARsPerCluster : PAGE_SIZE)
11 
12 #define TAG_NTFS '0ftN'
13 #define TAG_CCB 'CftN'
14 #define TAG_FCB 'FftN'
15 #define TAG_IRP_CTXT 'iftN'
16 #define TAG_ATT_CTXT 'aftN'
17 #define TAG_FILE_REC 'rftN'
18 
19 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
20 #define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
21 
22 #define DEVICE_NAME L"\\Ntfs"
23 
24 #include <pshpack1.h>
25 typedef struct _BIOS_PARAMETERS_BLOCK
26 {
29  UCHAR Unused0[7]; // 0x0E, checked when volume is mounted
30  UCHAR MediaId; // 0x15
31  UCHAR Unused1[2]; // 0x16
33  USHORT Heads; // 0x1A
34  UCHAR Unused2[4]; // 0x1C
35  UCHAR Unused3[4]; // 0x20, checked when volume is mounted
37 
39 {
40  USHORT Unknown[2]; // 0x24, always 80 00 80 00
45  UCHAR Unused4[3]; // 0x41
47  UCHAR Unused5[3]; // 0x45
49  UCHAR Checksum[4]; // 0x50
51 
52 typedef struct _BOOT_SECTOR
53 {
54  UCHAR Jump[3]; // 0x00
55  UCHAR OEMID[8]; // 0x03
58  UCHAR BootStrap[426]; // 0x54
59  USHORT EndSector; // 0x1FE
61 #include <poppack.h>
62 
63 //typedef struct _BootSector BootSector;
64 
65 typedef struct _NTFS_INFO
66 {
76 
83 
86 
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'
92 
93 typedef struct
94 {
98 
99 typedef struct
100 {
102 
103  ERESOURCE DirResource;
104 // ERESOURCE FatResource;
105 
106  KSPIN_LOCK FcbListLock;
107  LIST_ENTRY FcbListHead;
108 
110  PDEVICE_OBJECT StorageDevice;
112 
115  struct _FCB *VolumeFcb;
116 
118 
120 
122  ULONG Flags;
124 
126 
127 #define VCB_VOLUME_LOCKED 0x0001
128 
129 typedef struct
130 {
135  /* for DirectoryControl */
137  /* for DirectoryControl */
141 } NTFS_CCB, *PNTFS_CCB;
142 
143 typedef struct
144 {
157 
158 
159 typedef enum
160 {
174  AttributeEA = 0xE0,
177  AttributeEnd = 0xFFFFFFFF
179 
180 // FILE_RECORD_END seems to follow AttributeEnd in every file record starting with $Quota.
181 // No clue what data is being represented here.
182 #define FILE_RECORD_END 0x11477982
183 
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
197 
198 #define NTFS_MFT_MASK 0x0000FFFFFFFFFFFFULL
199 
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
207 
208 #define INDEX_ROOT_SMALL 0x0
209 #define INDEX_ROOT_LARGE 0x1
210 
211 #define INDEX_NODE_SMALL 0x0
212 #define INDEX_NODE_LARGE 0x1
213 
214 #define NTFS_INDEX_ENTRY_NODE 1
215 #define NTFS_INDEX_ENTRY_END 2
216 
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
221 
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
233 
234 /* Indexed Flag in Resident attributes - still somewhat speculative */
235 #define RA_INDEXED 0x01
236 
237 typedef struct
238 {
239  ULONG Type; /* Magic number 'FILE' */
240  USHORT UsaOffset; /* Offset to the update sequence */
241  USHORT UsaCount; /* Size in words of Update Sequence Number & Array (S) */
242  ULONGLONG Lsn; /* $LogFile Sequence Number (LSN) */
244 
245 /* NTFS_RECORD_HEADER.Type */
246 #define NRH_FILE_TYPE 0x454C4946 /* 'FILE' */
247 #define NRH_INDX_TYPE 0x58444E49 /* 'INDX' */
248 
249 
250 typedef struct _FILE_RECORD_HEADER
251 {
253  USHORT SequenceNumber; /* Sequence number */
254  USHORT LinkCount; /* Hard link count */
255  USHORT AttributeOffset; /* Offset to the first Attribute */
256  USHORT Flags; /* Flags */
257  ULONG BytesInUse; /* Real size of the FILE record */
258  ULONG BytesAllocated; /* Allocated size of the FILE record */
259  ULONGLONG BaseFileRecord; /* File reference to the base FILE record */
260  USHORT NextAttributeNumber; /* Next Attribute Id */
261  USHORT Padding; /* Align to 4 UCHAR boundary (XP) */
262  ULONG MFTRecordNumber; /* Number of this MFT Record (XP) */
264 
265 /* Flags in FILE_RECORD_HEADER */
266 
267 #define FRH_IN_USE 0x0001 /* Record is in use */
268 #define FRH_DIRECTORY 0x0002 /* Record is a directory */
269 #define FRH_UNKNOWN1 0x0004 /* Don't know */
270 #define FRH_UNKNOWN2 0x0008 /* Don't know */
271 
272 typedef struct
273 {
274  ULONG Type;
275  ULONG Length;
276  UCHAR IsNonResident;
277  UCHAR NameLength;
278  USHORT NameOffset;
279  USHORT Flags;
281  union
282  {
283  // Resident attributes
284  struct
285  {
287  USHORT ValueOffset;
288  UCHAR Flags;
289  UCHAR Reserved;
290  } Resident;
291  // Non-resident attributes
292  struct
293  {
294  ULONGLONG LowestVCN;
295  ULONGLONG HighestVCN;
296  USHORT MappingPairsOffset;
297  USHORT CompressionUnit;
298  UCHAR Reserved[4];
299  LONGLONG AllocatedSize;
301  LONGLONG InitializedSize;
302  LONGLONG CompressedSize;
303  } NonResident;
304  };
306 
307 typedef struct
308 {
317 
318 // The beginning and length of an attribute record are always aligned to an 8-byte boundary,
319 // relative to the beginning of the file record.
320 #define ATTR_RECORD_ALIGNMENT 8
321 
322 // Data runs are aligned to a 4-byte boundary, relative to the start of the attribute record
323 #define DATA_RUN_ALIGNMENT 4
324 
325 // Value offset is aligned to a 4-byte boundary, relative to the start of the attribute record
326 #define VALUE_OFFSET_ALIGNMENT 4
327 
328 typedef struct
329 {
335  ULONG AlignmentOrReserved[3];
336 #if 0
337  ULONG QuotaId;
338  ULONG SecurityId;
339  ULONGLONG QuotaCharge;
340  USN Usn;
341 #endif
343 
344 
345 typedef struct
346 {
351  ULONGLONG StartVcn; // LowVcn
354  USHORT AlignmentOrReserved[3];
356 
357 
358 typedef struct
359 {
368  union
369  {
370  struct
371  {
374  } EaInfo;
376  } Extended;
381 
382 typedef struct
383 {
388  UCHAR Padding[3];
390 
391 typedef struct
392 {
397  UCHAR Padding[3];
400 
401 typedef struct
402 {
407 
408 typedef struct
409 {
410  union
411  {
412  struct
413  {
415  } Directory;
416  struct
417  {
421  } ViewIndex;
422  } Data;
429 
430 struct _B_TREE_FILENAME_NODE;
432 
433 // Keys are arranged in nodes as an ordered, linked list
434 typedef struct _B_TREE_KEY
435 {
437  B_TREE_FILENAME_NODE *LesserChild; // Child-Node. All the keys in this node will be sorted before IndexEntry
438  PINDEX_ENTRY_ATTRIBUTE IndexEntry; // must be last member for FIELD_OFFSET
440 
441 // Every Node is just an ordered list of keys.
442 // Sub-nodes can be found attached to a key (if they exist).
443 // A key's sub-node precedes that key in the ordered list.
444 typedef struct _B_TREE_FILENAME_NODE
445 {
452 
453 typedef struct
454 {
456 } B_TREE, *PB_TREE;
457 
458 typedef struct
459 {
466 
467 typedef struct {
473 
474 #define IRPCONTEXT_CANWAIT 0x1
475 #define IRPCONTEXT_COMPLETE 0x2
476 #define IRPCONTEXT_QUEUE 0x4
477 
478 typedef struct
479 {
493 
494 typedef struct _NTFS_ATTR_CONTEXT
495 {
504  ULONGLONG FileOwnerMFTIndex; /* If attribute list attribute, reference the original file */
507 
508 #define FCB_CACHE_INITIALIZED 0x0001
509 #define FCB_IS_VOLUME_STREAM 0x0002
510 #define FCB_IS_VOLUME 0x0004
511 #define MAX_PATH 260
512 
513 typedef struct _FCB
514 {
516 
519 
522 
524  WCHAR *ObjectName; /* point on filename (250 chars max) in PathName */
525  WCHAR PathName[MAX_PATH]; /* path+filename 260 max */
526 
529 
531  struct _FCB* ParentFcb;
532 
534 
538 
541 
543 
544 } NTFS_FCB, *PNTFS_FCB;
545 
546 typedef struct _FIND_ATTR_CONTXT
547 {
558 
559 typedef struct
560 {
562  USHORT Array[];
564 
566 
568 NTSTATUS
570 {
571  PULONG Flags = &IrpContext->Flags;
572 
575 
576  return STATUS_PENDING;
577 }
578 
579 /* attrib.c */
580 
581 //VOID
582 //NtfsDumpAttribute(PATTRIBUTE Attribute);
583 
584 NTSTATUS
586  PFILE_RECORD_HEADER FileRecord,
587  PNTFS_ATTR_RECORD AttributeAddress,
588  PCWSTR Name,
589  USHORT NameLength);
590 
591 NTSTATUS
592 AddData(PFILE_RECORD_HEADER FileRecord,
593  PNTFS_ATTR_RECORD AttributeAddress);
594 
595 NTSTATUS
597  PNTFS_ATTR_CONTEXT AttrContext,
598  ULONG AttrOffset,
599  PFILE_RECORD_HEADER FileRecord,
600  ULONGLONG NextAssignedCluster,
601  ULONG RunLength);
602 
603 NTSTATUS
605  PFILE_RECORD_HEADER FileRecord,
606  PNTFS_ATTR_RECORD AttributeAddress,
607  PCWSTR Name,
608  USHORT NameLength);
609 
610 NTSTATUS
612  PFILE_RECORD_HEADER FileRecord,
613  PNTFS_ATTR_RECORD AttributeAddress,
614  PINDEX_ROOT_ATTRIBUTE NewIndexRoot,
615  ULONG RootLength,
616  PCWSTR Name,
617  USHORT NameLength);
618 
619 NTSTATUS
621  PNTFS_ATTR_RECORD AttributeAddress,
622  PDEVICE_EXTENSION DeviceExt,
624  BOOLEAN CaseSensitive,
625  PULONGLONG ParentMftIndex);
626 
627 NTSTATUS
629  PNTFS_ATTR_RECORD AttributeAddress);
630 
631 NTSTATUS
633  PLARGE_MCB DataRunsMCB,
634  PULONGLONG pNextVBN);
635 
636 NTSTATUS
638  PUCHAR RunBuffer,
639  ULONG MaxBufferSize,
640  PULONG UsedBufferSize);
641 
642 PUCHAR
643 DecodeRun(PUCHAR DataRun,
644  LONGLONG *DataRunOffset,
645  ULONGLONG *DataRunLength);
646 
648 
649 VOID
650 NtfsDumpDataRuns(PVOID StartOfRun,
651  ULONGLONG CurrentLCN);
652 
653 VOID
655  PFILE_RECORD_HEADER FileRecord);
656 
659  PFILE_RECORD_HEADER FileRecord);
660 
663  PFILE_RECORD_HEADER FileRecord,
664  UCHAR NameType);
665 
666 UCHAR
667 GetPackedByteCount(LONGLONG NumberToPack,
668  BOOLEAN IsSigned);
669 
670 NTSTATUS
672  PNTFS_ATTR_RECORD Attribute,
673  PULONGLONG LastCluster);
674 
677  PFILE_RECORD_HEADER FileRecord);
678 
679 NTSTATUS
682 
683 NTSTATUS
686 
687 NTSTATUS
690  PFILE_RECORD_HEADER FileRecord,
691  BOOLEAN OnlyResident,
692  PNTFS_ATTR_RECORD * Attribute);
693 
694 NTSTATUS
696  PNTFS_ATTR_RECORD * Attribute);
697 
698 VOID
700 
701 NTSTATUS
703  PNTFS_ATTR_CONTEXT AttrContext,
704  ULONG AttrOffset,
705  PFILE_RECORD_HEADER FileRecord,
706  ULONG ClustersToFree);
707 
708 /* blockdev.c */
709 
710 NTSTATUS
713  IN ULONG Length,
716  IN BOOLEAN Override);
717 
718 NTSTATUS
721  IN ULONG Length,
723  IN const PUCHAR Buffer);
724 
725 NTSTATUS
727  IN ULONG DiskSector,
731  IN BOOLEAN Override);
732 
733 NTSTATUS
737  IN ULONG InputBufferSize,
739  IN OUT PULONG OutputBufferSize,
740  IN BOOLEAN Override);
741 
742 
743 /* btree.c */
744 
745 LONG
747  PB_TREE_KEY Key2,
748  BOOLEAN CaseSensitive);
749 
750 NTSTATUS
752  PFILE_RECORD_HEADER FileRecordWithIndex,
753  /*PCWSTR IndexName,*/
754  PNTFS_ATTR_CONTEXT IndexRootContext,
755  PINDEX_ROOT_ATTRIBUTE IndexRoot,
756  PB_TREE *NewTree);
757 
758 NTSTATUS
760  PB_TREE Tree,
761  ULONG MaxIndexSize,
762  PINDEX_ROOT_ATTRIBUTE *IndexRoot,
763  ULONG *Length);
764 
765 NTSTATUS
767 
768 VOID
770 
771 VOID
773 
774 VOID
776 
777 VOID
780  ULONG Number,
781  ULONG Depth);
782 
783 VOID
786  ULONG Number,
787  ULONG Depth);
788 
789 NTSTATUS
790 CreateEmptyBTree(PB_TREE *NewTree);
791 
792 ULONGLONG
794  ULONG IndexBufferSize,
795  ULONGLONG Vcn);
796 
797 ULONGLONG
799 
800 ULONG
802 
803 NTSTATUS
805  ULONGLONG FileReference,
806  PFILENAME_ATTRIBUTE FileNameAttribute,
808  BOOLEAN CaseSensitive,
809  ULONG MaxIndexRootSize,
810  ULONG IndexRecordSize,
811  PB_TREE_KEY *MedianKey,
812  PB_TREE_FILENAME_NODE *NewRightHandSibling);
813 
814 NTSTATUS
817  PB_TREE_KEY *MedianKey,
818  PB_TREE_FILENAME_NODE *NewRightHandSibling,
819  BOOLEAN CaseSensitive);
820 
821 NTSTATUS
823  PB_TREE Tree,
824  ULONG IndexBufferSize,
825  PFILE_RECORD_HEADER FileRecord);
826 
827 NTSTATUS
829  PFILE_RECORD_HEADER FileRecord,
831  ULONG IndexBufferSize,
832  PNTFS_ATTR_CONTEXT IndexAllocationContext,
833  ULONG IndexAllocationOffset);
834 
835 /* close.c */
836 
837 NTSTATUS
838 NtfsCleanup(PNTFS_IRP_CONTEXT IrpContext);
839 
840 
841 /* close.c */
842 
843 NTSTATUS
846 
847 NTSTATUS
848 NtfsClose(PNTFS_IRP_CONTEXT IrpContext);
849 
850 
851 /* create.c */
852 
853 NTSTATUS
854 NtfsCreate(PNTFS_IRP_CONTEXT IrpContext);
855 
856 NTSTATUS
859  BOOLEAN CaseSensitive,
860  BOOLEAN CanWait);
861 
864 
865 NTSTATUS
868  BOOLEAN CaseSensitive,
869  BOOLEAN CanWait);
870 
871 /* devctl.c */
872 
873 NTSTATUS
875 
876 
877 /* dirctl.c */
878 
879 ULONGLONG
881  PFILE_RECORD_HEADER FileRecord,
882  PCWSTR Stream,
883  ULONG StreamLength,
884  PULONGLONG AllocatedSize);
885 
886 NTSTATUS
888 
889 
890 /* dispatch.c */
891 
895  PIRP Irp);
896 
897 
898 /* fastio.c */
899 
902  BOOLEAN Wait);
903 
904 VOID NTAPI
906 
909  BOOLEAN Wait);
910 
911 VOID NTAPI
913 
914 FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible;
915 FAST_IO_READ NtfsFastIoRead;
916 FAST_IO_WRITE NtfsFastIoWrite;
917 
918 
919 /* fcb.c */
920 
921 PNTFS_FCB
923  PCWSTR Stream,
924  PNTFS_VCB Vcb);
925 
926 VOID
928 
929 BOOLEAN
931 
932 BOOLEAN
934 
935 BOOLEAN
937 
938 BOOLEAN
940 
941 BOOLEAN
943 
944 VOID
946  PNTFS_FCB Fcb);
947 
948 VOID
950  PNTFS_FCB Fcb);
951 
952 VOID
954  PNTFS_FCB Fcb);
955 
956 PNTFS_FCB
958  PCWSTR FileName);
959 
960 NTSTATUS
962  PNTFS_FCB Fcb);
963 
964 PNTFS_FCB
966 
967 PNTFS_FCB
969 
970 NTSTATUS
972  PNTFS_FCB Fcb,
974 
975 NTSTATUS
977  PNTFS_FCB *pParentFCB,
978  PNTFS_FCB *pFCB,
979  PCWSTR pFileName,
980  BOOLEAN CaseSensitive);
981 
982 NTSTATUS
984  PNTFS_FCB pFCB,
985  ULONG Type,
986  PCWSTR Name,
987  ULONG NameLength,
988  PVOID * Data);
989 
990 NTSTATUS
992  PNTFS_FCB DirectoryFCB,
994  PCWSTR Stream,
996  ULONGLONG MFTIndex,
997  PNTFS_FCB * fileFCB);
998 
999 
1000 /* finfo.c */
1001 
1002 NTSTATUS
1004 
1005 NTSTATUS
1008  PDEVICE_EXTENSION DeviceExt,
1009  ULONG IrpFlags,
1010  BOOLEAN CaseSensitive,
1012 
1013 NTSTATUS
1015 
1016 /* fsctl.c */
1017 
1018 NTSTATUS
1020 
1021 
1022 /* mft.c */
1023 NTSTATUS
1025  ULONGLONG DirectoryMftIndex,
1026  ULONGLONG FileReferenceNumber,
1027  PFILENAME_ATTRIBUTE FilenameAttribute,
1028  BOOLEAN CaseSensitive);
1029 
1030 NTSTATUS
1032  PDEVICE_EXTENSION DeviceExt,
1033  PULONGLONG DestinationIndex,
1034  BOOLEAN CanWait);
1035 
1036 VOID
1038 
1041 
1042 VOID
1044 
1045 ULONG
1048  ULONGLONG Offset,
1049  PCHAR Buffer,
1050  ULONG Length);
1051 
1052 NTSTATUS
1055  ULONGLONG Offset,
1056  const PUCHAR Buffer,
1057  ULONG Length,
1058  PULONG LengthWritten,
1059  PFILE_RECORD_HEADER FileRecord);
1060 
1061 ULONGLONG
1063 
1064 NTSTATUS
1066  PNTFS_ATTR_CONTEXT AttrContext,
1067  PFILE_RECORD_HEADER FileRecord,
1068  ULONG AttrOffset,
1069  ULONG DataSize);
1070 
1073  PNTFS_ATTR_RECORD FirstAttributeToMove,
1074  ULONG FirstAttributeOffset,
1075  ULONG_PTR MoveTo);
1076 
1077 NTSTATUS
1079  PNTFS_FCB Fcb,
1080  PNTFS_ATTR_CONTEXT AttrContext,
1081  ULONG AttrOffset,
1082  PFILE_RECORD_HEADER FileRecord,
1084 
1085 VOID
1087  PNTFS_ATTR_RECORD AttrEnd,
1088  ULONG EndMarker);
1089 
1090 NTSTATUS
1092  PNTFS_ATTR_CONTEXT AttrContext,
1093  ULONG AttrOffset,
1094  PFILE_RECORD_HEADER FileRecord,
1096 
1097 NTSTATUS
1099  PNTFS_ATTR_CONTEXT AttrContext,
1100  ULONG AttrOffset,
1101  PFILE_RECORD_HEADER FileRecord,
1103 
1104 ULONGLONG
1106 
1107 BOOLEAN
1109  PINDEX_ENTRY_ATTRIBUTE IndexEntry,
1110  BOOLEAN DirSearch,
1111  BOOLEAN CaseSensitive);
1112 
1113 NTSTATUS
1115 
1116 NTSTATUS
1118  ULONGLONG index,
1120 
1121 NTSTATUS
1123  PFILE_RECORD_HEADER MftRecord,
1124  PCHAR IndexRecord,
1125  ULONG IndexBlockSize,
1126  PINDEX_ENTRY_ATTRIBUTE FirstEntry,
1127  PINDEX_ENTRY_ATTRIBUTE LastEntry,
1129  PULONG StartEntry,
1130  PULONG CurrentEntry,
1131  BOOLEAN DirSearch,
1132  ULONGLONG NewDataSize,
1133  ULONGLONG NewAllocatedSize,
1134  BOOLEAN CaseSensitive);
1135 
1136 NTSTATUS
1138  ULONGLONG ParentMFTIndex,
1140  BOOLEAN DirSearch,
1141  ULONGLONG NewDataSize,
1142  ULONGLONG NewAllocationSize,
1143  BOOLEAN CaseSensitive);
1144 
1145 NTSTATUS
1147  ULONGLONG MftIndex,
1148  PFILE_RECORD_HEADER FileRecord);
1149 
1150 NTSTATUS
1152  PFILE_RECORD_HEADER MftRecord,
1153  ULONG Type,
1154  PCWSTR Name,
1155  ULONG NameLength,
1156  PNTFS_ATTR_CONTEXT * AttrCtx,
1157  PULONG Offset);
1158 
1159 VOID
1163  ULONGLONG vcn,
1164  ULONG count,
1165  PVOID buffer);
1166 
1167 NTSTATUS
1170 
1171 NTSTATUS
1174 
1175 NTSTATUS
1177  ULONGLONG lcn,
1178  ULONG count,
1179  PVOID buffer);
1180 
1181 VOID
1185 
1186 NTSTATUS
1188  PUNICODE_STRING PathName,
1189  BOOLEAN CaseSensitive,
1190  PFILE_RECORD_HEADER *FileRecord,
1191  PULONGLONG MFTIndex);
1192 
1193 NTSTATUS
1195  PUNICODE_STRING PathName,
1196  BOOLEAN CaseSensitive,
1197  PFILE_RECORD_HEADER *FileRecord,
1198  PULONGLONG MFTIndex,
1199  ULONGLONG CurrentMFTIndex);
1200 
1201 VOID
1203  PFILE_RECORD_HEADER FileRecord);
1204 
1205 NTSTATUS
1207  PUNICODE_STRING SearchPattern,
1208  PULONG FirstEntry,
1209  PFILE_RECORD_HEADER *FileRecord,
1210  PULONGLONG MFTIndex,
1211  ULONGLONG CurrentMFTIndex,
1212  BOOLEAN CaseSensitive);
1213 
1214 NTSTATUS
1216  ULONGLONG MFTIndex,
1218  PULONG FirstEntry,
1219  BOOLEAN DirSearch,
1220  BOOLEAN CaseSensitive,
1221  ULONGLONG *OutMFTIndex);
1222 
1223 /* misc.c */
1224 
1225 BOOLEAN
1227 
1230  PIRP Irp);
1231 
1232 PVOID
1234  BOOLEAN Paging);
1235 
1236 NTSTATUS
1238  IN ULONG Length,
1240 
1241 #if 0
1242 BOOLEAN
1243 wstrcmpjoki(PWSTR s1, PWSTR s2);
1244 
1245 VOID
1246 CdfsSwapString(PWCHAR Out,
1247  PUCHAR In,
1248  ULONG Count);
1249 #endif
1250 
1251 VOID
1252 NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
1254 
1255 
1256 /* rw.c */
1257 
1258 NTSTATUS
1259 NtfsRead(PNTFS_IRP_CONTEXT IrpContext);
1260 
1261 NTSTATUS
1262 NtfsWrite(PNTFS_IRP_CONTEXT IrpContext);
1263 
1264 
1265 /* volinfo.c */
1266 
1267 NTSTATUS
1269  ULONG FirstDesiredCluster,
1270  ULONG DesiredClusters,
1271  PULONG FirstAssignedCluster,
1272  PULONG AssignedClusters);
1273 
1274 ULONGLONG
1276 
1277 NTSTATUS
1279 
1280 NTSTATUS
1282 
1283 
1284 /* ntfs.c */
1285 
1286 CODE_SEG("INIT")
1287 DRIVER_INITIALIZE DriverEntry;
1288 
1289 CODE_SEG("INIT")
1290 VOID
1291 NTAPI
1293 
1294 #endif /* NTFS_H */
NTSTATUS SplitBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, PB_TREE_KEY *MedianKey, PB_TREE_FILENAME_NODE *NewRightHandSibling, BOOLEAN CaseSensitive)
Definition: btree.c:1883
FAST_IO_WRITE NtfsFastIoWrite
Definition: ntfs.h:916
PNTFS_ATTR_RECORD MoveAttributes(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_RECORD FirstAttributeToMove, ULONG FirstAttributeOffset, ULONG_PTR MoveTo)
Definition: mft.c:512
UCHAR OEMID[8]
Definition: ntfs.h:55
ULONG Reserved
Definition: ntfs.h:420
signed char * PCHAR
Definition: retypes.h:7
PNTFS_ATTR_RECORD LastAttr
Definition: ntfs.h:552
NTSTATUS AddRun(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONGLONG NextAssignedCluster, ULONG RunLength)
Definition: attrib.c:599
NTSTATUS NtfsSetEndOfFile(PNTFS_FCB Fcb, PFILE_OBJECT FileObject, PDEVICE_EXTENSION DeviceExt, ULONG IrpFlags, BOOLEAN CaseSensitive, PLARGE_INTEGER NewFileSize)
Definition: finfo.c:563
ULONG Flags
Definition: ntfs.h:150
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentStart
Definition: ntfs.h:553
struct NTFS_RECORD_HEADER * PNTFS_RECORD_HEADER
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define IN
Definition: typedefs.h:39
VOID NtfsDumpFileRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:3334
ULONG GetSizeOfIndexEntries(PB_TREE_FILENAME_NODE Node)
Definition: btree.c:855
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
Definition: exfuncs.h:814
USHORT Padding
Definition: ntfs.h:261
ULONG CollationRule
Definition: ntfs.h:394
PDRIVER_OBJECT DriverObject
Definition: ntfs.h:147
LIST_ENTRY FcbListEntry
Definition: ntfs.h:530
PDEVICE_OBJECT DeviceObject
Definition: ntfs.h:488
ULONGLONG AllocatedSize
Definition: ntfs.h:365
struct S2 s2
struct NTFS_IRP_CONTEXT * PNTFS_IRP_CONTEXT
UCHAR Unused2[4]
Definition: ntfs.h:34
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
NTFSIDENTIFIER Identifier
Definition: ntfs.h:480
struct _FCB NTFS_FCB
NTSTATUS NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb, PNTFS_FCB DirectoryFCB, PUNICODE_STRING Name, PCWSTR Stream, PFILE_RECORD_HEADER Record, ULONGLONG MFTIndex, PNTFS_FCB *fileFCB)
Definition: fcb.c:384
NPAGED_LOOKASIDE_LIST AttrCtxtLookasideList
Definition: ntfs.h:154
_In_ PFCB _In_ LONGLONG StartingOffset
Definition: cdprocs.h:290
ULONGLONG LastAccessTime
Definition: ntfs.h:333
UCHAR MinorFunction
Definition: ntfs.h:484
NPAGED_LOOKASIDE_LIST FcbLookasideList
Definition: ntfs.h:153
FILENAME_ATTRIBUTE FileName
Definition: ntfs.h:427
ULONGLONG LastWriteTime
Definition: ntfs.h:332
ULONGLONG ChangeTime
Definition: ntfs.h:362
ULONGLONG SerialNumber
Definition: ntfs.h:77
ULONG BytesPerSector
Definition: ntfs.h:67
PFILE_OBJECT FileObject
Definition: ntfs.h:520
PFILENAME_ATTRIBUTE GetFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, UCHAR NameType)
Definition: attrib.c:1809
PIO_STACK_LOCATION Stack
Definition: ntfs.h:482
NTSTATUS UpdateIndexNode(PDEVICE_EXTENSION DeviceExt, PFILE_RECORD_HEADER FileRecord, PB_TREE_FILENAME_NODE Node, ULONG IndexBufferSize, PNTFS_ATTR_CONTEXT IndexAllocationContext, ULONG IndexAllocationOffset)
Definition: btree.c:1319
struct NTFSIDENTIFIER * PNTFSIDENTIFIER
struct NTFS_ATTR_RECORD * PNTFS_ATTR_RECORD
PFILE_OBJECT StreamFileObject
Definition: ntfs.h:111
struct FIXUP_ARRAY * PFIXUP_ARRAY
ULONG ReadAttribute(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length)
Definition: mft.c:1065
#define IRPCONTEXT_COMPLETE
Definition: ntfs.h:475
Definition: cdstruc.h:902
struct _NTFS_INFO NTFS_INFO
NTSTATUS UpdateFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MftIndex, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:1931
BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb)
Definition: fcb.c:153
#define MAX_PATH
Definition: ntfs.h:511
uint16_t * PWSTR
Definition: typedefs.h:56
FORCEINLINE NTSTATUS NtfsMarkIrpContextForQueue(PNTFS_IRP_CONTEXT IrpContext)
Definition: ntfs.h:569
ULONG MFTRecordNumber
Definition: ntfs.h:262
ULONGLONG CacheRunOffset
Definition: ntfs.h:497
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:167
NTSTATUS FindNextAttribute(PFIND_ATTR_CONTXT Context, PNTFS_ATTR_RECORD *Attribute)
Definition: attrib.c:1431
PNTFS_FCB NtfsMakeRootFCB(PNTFS_VCB Vcb)
Definition: fcb.c:314
GLuint GLuint GLsizei count
Definition: gl.h:1545
unsigned char * PUCHAR
Definition: retypes.h:3
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
Definition: wdfdevice.h:4527
char CHAR
Definition: xmlstorage.h:175
NTSTATUS NtfsSetInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: finfo.c:719
struct NTFS_ATTR_CONTEXT * PNTFS_ATTR_CONTEXT
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb)
Definition: fcb.c:127
NTSTATUS NtfsLookupFile(PDEVICE_EXTENSION Vcb, PUNICODE_STRING PathName, BOOLEAN CaseSensitive, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex)
Definition: mft.c:3287
ULONG MftDataOffset
Definition: ntfs.h:121
UCHAR BootStrap[426]
Definition: ntfs.h:58
UCHAR Unused0[7]
Definition: ntfs.h:29
NPAGED_LOOKASIDE_LIST FileRecLookasideList
Definition: ntfs.h:119
ULONG FileAttribute
Definition: ntfs.h:334
ULONGLONG CacheRunLength
Definition: ntfs.h:499
PB_TREE_KEY FirstKey
Definition: ntfs.h:450
NTSTATUS NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: fsctl.c:963
USHORT Reserved
Definition: ntfs.h:426
ULONGLONG GetIndexEntryVCN(PINDEX_ENTRY_ATTRIBUTE IndexEntry)
Definition: btree.c:1641
ULONG DirIndex
Definition: ntfs.h:533
NTSTATUS SetNonResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:756
ULONGLONG CacheRunCurrentOffset
Definition: ntfs.h:501
USHORT Length
Definition: ntfs.h:423
PNTFS_FCB NtfsGrabFCBFromTable(PNTFS_VCB Vcb, PCWSTR FileName)
Definition: fcb.c:217
ULONG BytesInUse
Definition: ntfs.h:257
ULONGLONG NtfsGetFileSize(PDEVICE_EXTENSION DeviceExt, PFILE_RECORD_HEADER FileRecord, PCWSTR Stream, ULONG StreamLength, PULONGLONG AllocatedSize)
Definition: dirctl.c:38
PFILE_RECORD_HEADER NtfsCreateEmptyFileRecord(PDEVICE_EXTENSION DeviceExt)
Definition: create.c:818
NTSTATUS NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, IN ULONG DiskSector, IN ULONG SectorCount, IN ULONG SectorSize, IN OUT PUCHAR Buffer, IN BOOLEAN Override)
Definition: blockdev.c:308
UCHAR MajorVersion
Definition: ntfs.h:461
GLuint buffer
Definition: glext.h:5915
ULONG LastCluster
Definition: ntfs.h:139
NTSTATUS NtfsLockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
Definition: misc.c:158
struct _FIND_ATTR_CONTXT FIND_ATTR_CONTXT
ULONGLONG VCN
Definition: ntfs.h:449
USHORT LinkCount
Definition: ntfs.h:540
UCHAR NameLength
Definition: ntfs.h:377
UCHAR SectorsPerCluster
Definition: ntfs.h:28
Definition: ntfs.h:408
DRIVER_DISPATCH NtfsFsdDispatch
Definition: ntfs.h:892
WORK_QUEUE_ITEM WorkQueueItem
Definition: ntfs.h:485
struct _BIOS_PARAMETERS_BLOCK * PBIOS_PARAMETERS_BLOCK
uint16_t * PWCHAR
Definition: typedefs.h:56
PB_TREE_FILENAME_NODE RootNode
Definition: ntfs.h:455
USHORT SequenceNumber
Definition: ntfs.h:253
WCHAR PathName[MAX_PATH]
Definition: ntfs.h:525
NTSTATUS NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: devctl.c:36
VOID DumpBTreeKey(PB_TREE Tree, PB_TREE_KEY Key, ULONG Number, ULONG Depth)
Definition: btree.c:1549
NTSTATUS FindNextAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
Definition: attrib.c:1321
ULONGLONG MFTIndex
Definition: ntfs.h:539
ULONGLONG ClusterCount
Definition: ntfs.h:71
PNTFS_ATTR_CONTEXT PrepareAttributeContext(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:41
NTSTATUS ConvertDataRunsToLargeMCB(PUCHAR DataRun, PLARGE_MCB DataRunsMCB, PULONGLONG pNextVBN)
Definition: attrib.c:825
ULONGLONG LastAccessTime
Definition: ntfs.h:364
ULONG Entry
Definition: ntfs.h:136
struct _B_TREE_KEY * PB_TREE_KEY
ULONGLONG VCN
Definition: ntfs.h:404
ULONGLONG NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt)
Definition: volinfo.c:37
ULONGLONG MFTIndex
Definition: ntfs.h:314
struct VOLINFO_ATTRIBUTE * PVOLINFO_ATTRIBUTE
UCHAR MajorVersion
Definition: ntfs.h:80
NTSTATUS DemoteBTreeRoot(PB_TREE Tree)
Definition: btree.c:1089
USHORT DataOffset
Definition: ntfs.h:418
LIST_ENTRY NextCCB
Definition: ntfs.h:132
ULONG FileAttributes
Definition: ntfs.h:367
USHORT KeyLength
Definition: ntfs.h:424
USHORT DataLength
Definition: ntfs.h:419
uint32_t ULONG_PTR
Definition: typedefs.h:65
VOID NTAPI NtfsRelLazyWrite(PVOID Context)
Definition: fastio.c:51
NTSTATUS NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: dirctl.c:590
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentCur
Definition: ntfs.h:555
LONGLONG USN
Definition: ntbasedef.h:388
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)
Definition: mft.c:1770
VOID NtfsDumpDataRuns(PVOID StartOfRun, ULONGLONG CurrentLCN)
Definition: attrib.c:1755
NTSTATUS NtfsCleanup(PNTFS_IRP_CONTEXT IrpContext)
Definition: cleanup.c:89
struct _B_TREE_FILENAME_NODE * PB_TREE_FILENAME_NODE
Definition: ntfs.h:129
struct B_TREE * PB_TREE
ULONG FirstEntryOffset
Definition: ntfs.h:384
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
Definition: ketypes.h:256
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
NTFSIDENTIFIER Identifier
Definition: ntfs.h:515
VOID SetFileRecordEnd(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttrEnd, ULONG EndMarker)
Definition: mft.c:706
struct _EXTENDED_BIOS_PARAMETERS_BLOCK EXTENDED_BIOS_PARAMETERS_BLOCK
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
_In_ PIRP Irp
Definition: csq.h:116
struct FILENAME_ATTRIBUTE * PFILENAME_ATTRIBUTE
struct NTFS_ATTRIBUTE_LIST_ITEM * PNTFS_ATTRIBUTE_LIST_ITEM
ERESOURCE Resource
Definition: ntfs.h:146
long LONG
Definition: pedump.c:60
USHORT AttributeOffset
Definition: ntfs.h:255
INDEX_HEADER_ATTRIBUTE Header
Definition: ntfs.h:405
NTSTATUS NtfsCreateDirectory(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
Definition: create.c:681
PNTFS_FCB NtfsCreateFCB(PCWSTR FileName, PCWSTR Stream, PNTFS_VCB Vcb)
Definition: fcb.c:67
USHORT USN
Definition: ntfs.h:561
ULARGE_INTEGER MftMirrStart
Definition: ntfs.h:73
struct _B_TREE_KEY B_TREE_KEY
ULONGLONG StartingVCN
Definition: ntfs.h:313
ULONG LastOffset
Definition: ntfs.h:140
USHORT VolumeLabelLength
Definition: ntfs.h:78
unsigned char BOOLEAN
ULONGLONG SectorCount
Definition: ntfs.h:70
NTSTATUS NtfsAddFilenameToDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, ULONGLONG FileReferenceNumber, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
Definition: mft.c:2192
NTFS_INFO NtfsInfo
Definition: ntfs.h:117
LONG RefCount
Definition: ntfs.h:535
NTSTATUS ReadLCN(PDEVICE_EXTENSION Vcb, ULONGLONG lcn, ULONG count, PVOID buffer)
Definition: mft.c:2631
NTSTATUS NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
Definition: close.c:40
BOOLEAN NtfsFCBIsReparsePoint(PNTFS_FCB Fcb)
Definition: fcb.c:134
PNTFS_IRP_CONTEXT NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp)
Definition: misc.c:66
WCHAR Stream[MAX_PATH]
Definition: ntfs.h:523
VOID NTAPI NtfsRelReadAhead(PVOID Context)
Definition: fastio.c:72
NTSTATUS UpdateIndexAllocation(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG IndexBufferSize, PFILE_RECORD_HEADER FileRecord)
Definition: btree.c:1182
#define IRPCONTEXT_QUEUE
Definition: ntfs.h:476
USHORT NextAttributeNumber
Definition: ntfs.h:260
USHORT LinkCount
Definition: ntfs.h:254
WCHAR * ObjectName
Definition: ntfs.h:524
#define MAXIMUM_VOLUME_LABEL_LENGTH
Definition: iotypes.h:177
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_IRQL_requires_same_ typedef _In_ ULONG ControlCode
Definition: wmitypes.h:55
struct _B_TREE_KEY * NextKey
Definition: ntfs.h:436
struct _FILE_RECORD_HEADER * PFILE_RECORD_HEADER
Definition: bufpool.h:45
ULONG BytesPerIndexRecord
Definition: ntfs.h:75
B_TREE_FILENAME_NODE * LesserChild
Definition: ntfs.h:437
NTSTATUS NtfsQueryInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: finfo.c:420
GLuint index
Definition: glext.h:6031
struct STANDARD_INFORMATION * PSTANDARD_INFORMATION
NTSTATUS CreateEmptyBTree(PB_TREE *NewTree)
Definition: btree.c:348
NTSTATUS NtfsRead(PNTFS_IRP_CONTEXT IrpContext)
Definition: rw.c:216
PDEVICE_EXTENSION Vcb
Definition: ntfs.h:548
BOOLEAN NTAPI NtfsAcqReadAhead(PVOID Context, BOOLEAN Wait)
Definition: fastio.c:60
ULONG SizeOfEntry
Definition: ntfs.h:395
NTSTATUS FindFirstAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
Definition: attrib.c:1307
VOID NtfsDestroyFCB(PNTFS_FCB Fcb)
Definition: fcb.c:115
_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
Definition: fltkernel.h:1230
struct DEVICE_EXTENSION * PDEVICE_EXTENSION
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
USHORT Length
Definition: ntfs.h:348
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)
Definition: btree.c:1691
FSRTL_COMMON_FCB_HEADER RFCB
Definition: ntfs.h:517
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
ATTRIBUTE_TYPE
Definition: ntfs.h:159
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:859
USHORT AttributeNumber
Definition: ntfs.h:353
ULONG OpenHandleCount
Definition: ntfs.h:537
int64_t LONGLONG
Definition: typedefs.h:68
NTSTATUS NtfsReadFCBAttribute(PNTFS_VCB Vcb, PNTFS_FCB pFCB, ULONG Type, PCWSTR Name, ULONG NameLength, PVOID *Data)
Definition: fcb.c:730
NTSTATUS ConvertLargeMCBToDataRuns(PLARGE_MCB DataRunsMCB, PUCHAR RunBuffer, ULONG MaxBufferSize, PULONG UsedBufferSize)
Definition: attrib.c:896
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
Definition: wdfiotarget.h:949
int Count
Definition: noreturn.cpp:7
BOOLEAN NtfsIsIrpTopLevel(PIRP Irp)
Definition: misc.c:43
ULONGLONG GetAllocationOffsetFromVCN(PDEVICE_EXTENSION DeviceExt, ULONG IndexBufferSize, ULONGLONG Vcn)
Definition: btree.c:1630
USHORT AlignmentOrReserved
Definition: ntfs.h:373
NTSTATUS FindFirstAttribute(PFIND_ATTR_CONTXT Context, PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, BOOLEAN OnlyResident, PNTFS_ATTR_RECORD *Attribute)
Definition: attrib.c:1383
ULONGLONG DataSize
Definition: ntfs.h:366
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
UCHAR Unused1[2]
Definition: ntfs.h:31
FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible
Definition: ntfs.h:914
NTSTATUS AddFileName(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, PULONGLONG ParentMftIndex)
Definition: attrib.c:230
BOOLEAN DiskNeedsUpdating
Definition: ntfs.h:448
VOID EnumerAttribute(PFILE_RECORD_HEADER file, PDEVICE_EXTENSION Vcb, PDEVICE_OBJECT DeviceObject)
struct _BOOT_SECTOR * PBOOT_SECTOR
__wchar_t WCHAR
Definition: xmlstorage.h:180
struct _FILE_RECORD_HEADER FILE_RECORD_HEADER
NTSTATUS NtfsCreateFileRecord(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
Definition: create.c:886
NTSTATUS AddNewMftEntry(PFILE_RECORD_HEADER FileRecord, PDEVICE_EXTENSION DeviceExt, PULONGLONG DestinationIndex, BOOLEAN CanWait)
Definition: mft.c:2022
ULONG BytesAllocated
Definition: ntfs.h:258
#define STATUS_PENDING
Definition: ntstatus.h:82
struct _FILE_RECORD_HEADER * MasterFileTable
Definition: ntfs.h:114
PFILE_OBJECT PtrFileObject
Definition: ntfs.h:133
char CCHAR
Definition: typedefs.h:51
struct S1 s1
uint64_t ULONGLONG
Definition: typedefs.h:67
BOOLEAN NtfsFCBIsEncrypted(PNTFS_FCB Fcb)
Definition: fcb.c:147
ULONG BytesPerFileRecord
Definition: ntfs.h:74
VOID NtfsFileFlagsToAttributes(ULONG NtfsAttributes, PULONG FileAttributes)
Definition: misc.c:105
#define Vcb
Definition: cdprocs.h:1415
UCHAR MajorFunction
Definition: ntfs.h:483
struct _NTFS_ATTR_CONTEXT NTFS_ATTR_CONTEXT
Type
Definition: Type.h:6
PNTFS_ATTR_RECORD FirstAttr
Definition: ntfs.h:550
NTSTATUS SetResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:891
BIOS_PARAMETERS_BLOCK BPB
Definition: ntfs.h:56
BOOLEAN NtfsFCBIsCompressed(PNTFS_FCB Fcb)
Definition: fcb.c:141
ULONG AttributeType
Definition: ntfs.h:393
ULONGLONG CreationTime
Definition: ntfs.h:361
ULONG GetFileNameAttributeLength(PFILENAME_ATTRIBUTE FileNameAttribute)
Definition: attrib.c:1978
VOID NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
Definition: ntfs.c:170
INDEX_HEADER_ATTRIBUTE Header
Definition: ntfs.h:398
enum ATTRIBUTE_TYPE * PATTRIBUTE_TYPE
* PFILE_OBJECT
Definition: iotypes.h:1998
CRegistryTree Tree
NTSTATUS FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
Definition: mft.c:1965
struct DEVICE_EXTENSION NTFS_VCB
struct INDEX_HEADER_ATTRIBUTE * PINDEX_HEADER_ATTRIBUTE
_In_opt_ PLARGE_INTEGER NewFileSize
Definition: mmfuncs.h:608
NTSTATUS AddFixupArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
Definition: mft.c:2603
VOID DestroyBTree(PB_TREE Tree)
Definition: btree.c:1542
ULONGLONG AttributeDataLength(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:259
ULONG Flags
Definition: ntfs.h:536
PNTFS_VCB Vcb
Definition: ntfs.h:521
PWCHAR DirectorySearchPattern
Definition: ntfs.h:138
BOOLEAN CompareFileName(PUNICODE_STRING FileName, PINDEX_ENTRY_ATTRIBUTE IndexEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive)
Definition: mft.c:2650
unsigned char UCHAR
Definition: xmlstorage.h:181
USHORT Flags
Definition: ntfs.h:425
UCHAR NameOffset
Definition: ntfs.h:350
struct NTFS_CCB * PNTFS_CCB
NTSTATUS NtfsLookupFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING PathName, BOOLEAN CaseSensitive, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex)
Definition: mft.c:3229
NTSTATUS AddData(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
Definition: attrib.c:160
NTSTATUS NtfsAttachFCBToFileObject(PNTFS_VCB Vcb, PNTFS_FCB Fcb, PFILE_OBJECT FileObject)
Definition: fcb.c:459
ULONG Type
Definition: ntfs.h:95
PNTFS_ATTR_RECORD CurrAttr
Definition: ntfs.h:551
struct _FCB * PNTFS_FCB
ULONG TotalSizeOfEntries
Definition: ntfs.h:385
USHORT UsaCount
Definition: ntfs.h:241
VOID ReleaseAttributeContext(PNTFS_ATTR_CONTEXT Context)
Definition: mft.c:104
ULONG Offset
Definition: ntfs.h:556
ULONG Flags
Definition: ntfs.h:481
BOOLEAN NTAPI NtfsAcqLazyWrite(PVOID Context, BOOLEAN Wait)
Definition: fastio.c:39
FAST_IO_READ NtfsFastIoRead
Definition: ntfs.h:915
Definition: typedefs.h:119
NTFSIDENTIFIER Identifier
Definition: ntfs.h:131
ULONGLONG DirectoryFileReferenceNumber
Definition: ntfs.h:360
VOID ReadVCN(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER file, ATTRIBUTE_TYPE type, ULONGLONG vcn, ULONG count, PVOID buffer)
ULONG SectorCount
Definition: part_xbox.c:31
DRIVER_DISPATCH(nfs41_FsdDispatch)
UCHAR ClustersPerIndexRecord
Definition: ntfs.h:396
USHORT Flags
Definition: ntfs.h:82
NTSTATUS AddIndexRoot(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PINDEX_ROOT_ATTRIBUTE NewIndexRoot, ULONG RootLength, PCWSTR Name, USHORT NameLength)
Definition: attrib.c:495
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
Definition: ntpoapi.h:204
ERESOURCE MainResource
Definition: ntfs.h:528
VOID FindCloseAttribute(PFIND_ATTR_CONTXT Context)
Definition: attrib.c:1465
struct REPARSE_POINT_ATTRIBUTE * PREPARSE_POINT_ATTRIBUTE
PSTANDARD_INFORMATION GetStandardInformationFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:1940
PDEVICE_OBJECT DeviceObject
Definition: ntfs.h:148
USHORT Flags
Definition: ntfs.h:463
ULONGLONG Unknown1
Definition: ntfs.h:460
NTSTATUS SetAttributeDataLength(PFILE_OBJECT FileObject, PNTFS_FCB Fcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:615
ULONG ReparseTag
Definition: ntfs.h:375
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)
Definition: blockdev.c:326
LONG CompareTreeKeys(PB_TREE_KEY Key1, PB_TREE_KEY Key2, BOOLEAN CaseSensitive)
Definition: btree.c:417
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
VOID NtfsGrabFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:160
UCHAR MinorVersion
Definition: ntfs.h:462
NTSTATUS SavedExceptionCode
Definition: ntfs.h:490
NTSTATUS NtfsCreate(PNTFS_IRP_CONTEXT IrpContext)
Definition: create.c:622
ULONG Unknown2
Definition: ntfs.h:464
NTSTATUS UpdateFileNameRecord(PDEVICE_EXTENSION Vcb, ULONGLONG ParentMFTIndex, PUNICODE_STRING FileName, BOOLEAN DirSearch, ULONGLONG NewDataSize, ULONGLONG NewAllocationSize, BOOLEAN CaseSensitive)
Definition: mft.c:1660
ULONGLONG LastWriteTime
Definition: ntfs.h:363
NTSTATUS ReadFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG index, PFILE_RECORD_HEADER file)
Definition: mft.c:1631
LONGLONG CacheRunLastLCN
Definition: ntfs.h:500
ULONG MftZoneReservation
Definition: ntfs.h:84
VOID NtfsAddFCBToTable(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:204
ULONGLONG FileMFTIndex
Definition: ntfs.h:503
enum _LOCK_OPERATION LOCK_OPERATION
NPAGED_LOOKASIDE_LIST IrpContextLookasideList
Definition: ntfs.h:152
UCHAR GetPackedByteCount(LONGLONG NumberToPack, BOOLEAN IsSigned)
Definition: attrib.c:1846
unsigned short USHORT
Definition: pedump.c:61
ULONGLONG IndexedFile
Definition: ntfs.h:414
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks
Definition: ntfs.h:149
UCHAR Unused3[4]
Definition: ntfs.h:35
NTSTATUS NtfsWriteDisk(IN PDEVICE_OBJECT DeviceObject, IN LONGLONG StartingOffset, IN ULONG Length, IN ULONG SectorSize, IN const PUCHAR Buffer)
Definition: blockdev.c:163
EXTENDED_BIOS_PARAMETERS_BLOCK EBPB
Definition: ntfs.h:57
NTSTATUS GetLastClusterInDataRun(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_RECORD Attribute, PULONGLONG LastCluster)
Definition: attrib.c:1908
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH]
Definition: ntfs.h:79
struct DEVICE_EXTENSION * PNTFS_VCB
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
NTSTATUS CreateIndexRootFromBTree(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG MaxIndexSize, PINDEX_ROOT_ATTRIBUTE *IndexRoot, ULONG *Length)
Definition: btree.c:910
BOOLEAN OnlyResident
Definition: ntfs.h:549
struct _BIOS_PARAMETERS_BLOCK BIOS_PARAMETERS_BLOCK
#define FORCEINLINE
Definition: wdftypes.h:67
LARGE_INTEGER CurrentByteOffset
Definition: ntfs.h:134
NTSTATUS CreateBTreeFromIndex(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecordWithIndex, PNTFS_ATTR_CONTEXT IndexRootContext, PINDEX_ROOT_ATTRIBUTE IndexRoot, PB_TREE *NewTree)
Definition: btree.c:682
ULONGLONG StartVcn
Definition: ntfs.h:351
ATTRIBUTE_TYPE AttributeType
Definition: ntfs.h:347
unsigned int * PULONG
Definition: retypes.h:1
struct _FIND_ATTR_CONTXT * PFIND_ATTR_CONTXT
struct _NTFS_ATTR_CONTEXT * MFTContext
Definition: ntfs.h:113
struct ATTRIBUTE_LIST * PATTRIBUTE_LIST
USHORT Flags
Definition: ntfs.h:256
struct _EXTENDED_BIOS_PARAMETERS_BLOCK * PEXTENDED_BIOS_PARAMETERS_BLOCK
struct INDEX_BUFFER * PINDEX_BUFFER
UCHAR NameLength
Definition: ntfs.h:349
Definition: ntfs.h:453
NTSTATUS NtfsFindFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING SearchPattern, PULONG FirstEntry, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex, BOOLEAN CaseSensitive)
Definition: mft.c:3355
NTSTATUS AddBitmap(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
Definition: attrib.c:72
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
NTSTATUS InternalSetResidentAttributeLength(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_CONTEXT AttrContext, PFILE_RECORD_HEADER FileRecord, ULONG AttrOffset, ULONG DataSize)
Definition: mft.c:542
NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:260
ULONGLONG Lsn
Definition: ntfs.h:242
VOID DumpBTree(PB_TREE Tree)
Definition: btree.c:1622
struct _BEEP_DEVICE_EXTENSION DEVICE_EXTENSION
NTFSIDENTIFIER Identifier
Definition: ntfs.h:145
PNTFS_ATTR_RECORD pRecord
Definition: ntfs.h:505
BOOLEAN IsTopLevel
Definition: ntfs.h:487
VOID DestroyBTreeNode(PB_TREE_FILENAME_NODE Node)
Definition: btree.c:1511
NTFS_RECORD_HEADER Ntfs
Definition: ntfs.h:252
VOID DumpBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, ULONG Number, ULONG Depth)
Definition: btree.c:1583
Definition: iotypes.h:189
#define OUT
Definition: typedefs.h:40
VOID NtfsDumpData(ULONG_PTR Buffer, ULONG Length)
Definition: mft.c:3297
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:383
NTSTATUS NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pParentFCB, PNTFS_FCB *pFCB, PCWSTR pFileName, BOOLEAN CaseSensitive)
Definition: fcb.c:598
FAST_IO_DISPATCH FastIoDispatch
Definition: ntfs.h:151
NTSTATUS WriteAttribute(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, const PUCHAR Buffer, ULONG Length, PULONG LengthWritten, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:1315
DRIVER_INITIALIZE DriverEntry
Definition: ntfs.h:1287
PUCHAR DecodeRun(PUCHAR DataRun, LONGLONG *DataRunOffset, ULONGLONG *DataRunLength)
Definition: attrib.c:966
ULONG ERESOURCE
Definition: env_spec_w32.h:594
PUCHAR CacheRun
Definition: ntfs.h:496
unsigned int ULONG
Definition: retypes.h:1
ULONGLONG BaseFileRecord
Definition: ntfs.h:259
PVOID NtfsGetUserBuffer(PIRP Irp, BOOLEAN Paging)
Definition: misc.c:120
ERESOURCE PagingIoResource
Definition: ntfs.h:527
NTSTATUS AddIndexAllocation(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
Definition: attrib.c:388
PNTFS_GLOBAL_DATA NtfsGlobalData
Definition: ntfs.c:36
struct _FCB * VolumeFcb
Definition: ntfs.h:115
_In_ FLT_SET_CONTEXT_OPERATION Operation
Definition: fltkernel.h:1467
ULONGLONG CreationTime
Definition: ntfs.h:330
LONGLONG CacheRunStartLCN
Definition: ntfs.h:498
struct _FCB * ParentFcb
Definition: cdstruc.h:940
ULONG SectorsPerCluster
Definition: ntfs.h:68
struct INDEX_ROOT_ATTRIBUTE * PINDEX_ROOT_ATTRIBUTE
CCHAR PriorityBoost
Definition: ntfs.h:491
PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:1985
ULARGE_INTEGER MftStart
Definition: ntfs.h:72
NTFS_RECORD_HEADER Ntfs
Definition: ntfs.h:403
struct NTFS_GLOBAL_DATA * PNTFS_GLOBAL_DATA
NTSTATUS FindAttribute(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER MftRecord, ULONG Type, PCWSTR Name, ULONG NameLength, PNTFS_ATTR_CONTEXT *AttrCtx, PULONG Offset)
Definition: mft.c:131
NTSTATUS AddStandardInformation(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
Definition: attrib.c:766
NTSTATUS NtfsClose(PNTFS_IRP_CONTEXT IrpContext)
Definition: close.c:84
PINDEX_ENTRY_ATTRIBUTE IndexEntry
Definition: ntfs.h:438
USHORT UsaOffset
Definition: ntfs.h:240
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 NameType
Definition: acpixf.h:654
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
NTSTATUS FreeClusters(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONG ClustersToFree)
Definition: attrib.c:1057
struct _B_TREE_FILENAME_NODE B_TREE_FILENAME_NODE
Definition: ntfs.h:431
_In_ ULONG SectorSize
Definition: halfuncs.h:291
ULONGLONG FileOwnerMFTIndex
Definition: ntfs.h:504
ULONGLONG AttributeAllocatedLength(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:249
USHORT BytesPerSector
Definition: ntfs.h:27
NTSTATUS NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, IN LONGLONG StartingOffset, IN ULONG Length, IN ULONG SectorSize, IN OUT PUCHAR Buffer, IN BOOLEAN Override)
Definition: blockdev.c:37
_In_ PFCB Fcb
Definition: cdprocs.h:159
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentEnd
Definition: ntfs.h:554
_In_ BOOLEAN _In_ USHORT Directory
Definition: rtlfuncs.h:3885
FILENAME_ATTRIBUTE Entry
Definition: ntfs.h:542
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
BOOLEAN EnableWriteSupport
Definition: ntfs.h:155
SECTION_OBJECT_POINTERS SectionObjectPointers
Definition: ntfs.h:518
UCHAR MinorVersion
Definition: ntfs.h:81
USHORT EndSector
Definition: ntfs.h:59
ULONG Size
Definition: ntfs.h:96
PFILE_OBJECT FileObject
Definition: ntfs.h:489
NTSTATUS NtfsFindMftRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MFTIndex, PUNICODE_STRING FileName, PULONG FirstEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive, ULONGLONG *OutMFTIndex)
Definition: mft.c:3146
ULONG BytesPerCluster
Definition: ntfs.h:69
UCHAR Jump[3]
Definition: ntfs.h:54
ULONGLONG FileReferenceNumber
Definition: ntfs.h:352
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4751
PNTFS_FCB NtfsOpenRootFCB(PNTFS_VCB Vcb)
Definition: fcb.c:369
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING Stream
Definition: fltkernel.h:1092
struct _NTFS_INFO * PNTFS_INFO
NTSTATUS NtfsAllocateClusters(PDEVICE_EXTENSION DeviceExt, ULONG FirstDesiredCluster, ULONG DesiredClusters, PULONG FirstAssignedCluster, PULONG AssignedClusters)
Definition: volinfo.c:105
struct INDEX_ENTRY_ATTRIBUTE * PINDEX_ENTRY_ATTRIBUTE
NTSTATUS NtfsQueryVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: volinfo.c:343
IN PVOID Instance
Definition: pci.h:361
NTSTATUS UpdateMftMirror(PNTFS_VCB Vcb)
Definition: mft.c:2714
LARGE_MCB DataRunsMCB
Definition: ntfs.h:502
ULONGLONG ChangeTime
Definition: ntfs.h:331
NTFSIDENTIFIER Identifier
Definition: ntfs.h:101
NTSTATUS NtfsSetVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: volinfo.c:420
NTSTATUS NtfsWrite(PNTFS_IRP_CONTEXT IrpContext)
Definition: rw.c:537
VOID NtfsDumpFileAttributes(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:1790
VOID NtfsReleaseFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:177
UCHAR NameType
Definition: ntfs.h:378
Definition: dlist.c:348
BOOLEAN HasValidVCN
Definition: ntfs.h:447
Definition: fci.c:126
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
Definition: wdfregistry.h:271
struct _BOOT_SECTOR BOOT_SECTOR
USHORT SectorsPerTrack
Definition: ntfs.h:32
USHORT PackedEaSize
Definition: ntfs.h:372