ReactOS 0.4.17-dev-1137-g7772194
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#define TAG_IO_RUNS 'RftN'
19
20#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
21#define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
22
23#define DEVICE_NAME L"\\Ntfs"
24
25#include <pshpack1.h>
27{
30 UCHAR Unused0[7]; // 0x0E, checked when volume is mounted
31 UCHAR MediaId; // 0x15
32 UCHAR Unused1[2]; // 0x16
34 USHORT Heads; // 0x1A
35 UCHAR Unused2[4]; // 0x1C
36 UCHAR Unused3[4]; // 0x20, checked when volume is mounted
38
40{
41 USHORT Unknown[2]; // 0x24, always 80 00 80 00
46 UCHAR Unused4[3]; // 0x41
48 UCHAR Unused5[3]; // 0x45
50 UCHAR Checksum[4]; // 0x50
52
53typedef struct _BOOT_SECTOR
54{
55 UCHAR Jump[3]; // 0x00
56 UCHAR OEMID[8]; // 0x03
59 UCHAR BootStrap[426]; // 0x54
60 USHORT EndSector; // 0x1FE
62#include <poppack.h>
63
64//typedef struct _BootSector BootSector;
65
66typedef struct _NTFS_INFO
67{
77
84
87
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'
93
94typedef struct
95{
99
100typedef struct
101{
103
105// ERESOURCE FatResource;
106
107 /* Serializes every read-modify-write of a directory's file record and
108 * index. Taken after any FCB resource, and before BitmapResource. */
110
111 /* In-memory copy of $Bitmap, loaded at mount. BitmapResource guards
112 * the copy and keeps it in step with the disk. */
119
122
126
130
132
134
135 /* $UpCase, one upcased code point per UCS-2 value. NTFS defines its
136 * own case folding through this file, so comparisons must use it
137 * rather than the Rtl table. */
139
143
145
146#define VCB_VOLUME_LOCKED 0x0001
147/* Volume dismounted: everything but raw volume access is refused */
148#define VCB_VOLUME_DISMOUNTED 0x0002
149
150typedef struct
151{
156 /* for DirectoryControl */
158 /* for DirectoryControl */
164
165/* NTFS has no "." or ".." in its indices, so directory enumeration makes them
166 * up. These record which of the two a scan has already handed out. */
167#define CCB_RETURNED_DOT 0x0001
168#define CCB_RETURNED_DOTDOT 0x0002
169
170typedef struct
171{
184
185
186typedef enum
187{
204 AttributeEnd = 0xFFFFFFFF
206
207// FILE_RECORD_END seems to follow AttributeEnd in every file record starting with $Quota.
208// No clue what data is being represented here.
209#define FILE_RECORD_END 0x11477982
210
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
224
225#define NTFS_MFT_MASK 0x0000FFFFFFFFFFFFULL
226
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
234
235#define INDEX_ROOT_SMALL 0x0
236#define INDEX_ROOT_LARGE 0x1
237
238#define INDEX_NODE_SMALL 0x0
239#define INDEX_NODE_LARGE 0x1
240
241#define NTFS_INDEX_ENTRY_NODE 1
242#define NTFS_INDEX_ENTRY_END 2
243
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
248
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
260
261/* NTFS_ATTR_RECORD Flags */
262#define NTFS_ATTR_COMPRESSION_MASK 0x00FF
263#define NTFS_ATTR_SPARSE 0x8000
264
265/* Indexed Flag in Resident attributes - still somewhat speculative */
266#define RA_INDEXED 0x01
267
268typedef struct
269{
270 ULONG Type; /* Magic number 'FILE' */
271 USHORT UsaOffset; /* Offset to the update sequence */
272 USHORT UsaCount; /* Size in words of Update Sequence Number & Array (S) */
273 ULONGLONG Lsn; /* $LogFile Sequence Number (LSN) */
275
276/* NTFS_RECORD_HEADER.Type */
277#define NRH_FILE_TYPE 0x454C4946 /* 'FILE' */
278#define NRH_INDX_TYPE 0x58444E49 /* 'INDX' */
279
280
282{
284 USHORT SequenceNumber; /* Sequence number */
285 USHORT LinkCount; /* Hard link count */
286 USHORT AttributeOffset; /* Offset to the first Attribute */
287 USHORT Flags; /* Flags */
288 ULONG BytesInUse; /* Real size of the FILE record */
289 ULONG BytesAllocated; /* Allocated size of the FILE record */
290 ULONGLONG BaseFileRecord; /* File reference to the base FILE record */
291 USHORT NextAttributeNumber; /* Next Attribute Id */
292 USHORT Padding; /* Align to 4 UCHAR boundary (XP) */
293 ULONG MFTRecordNumber; /* Number of this MFT Record (XP) */
295
296/* Flags in FILE_RECORD_HEADER */
297
298#define FRH_IN_USE 0x0001 /* Record is in use */
299#define FRH_DIRECTORY 0x0002 /* Record is a directory */
300#define FRH_UNKNOWN1 0x0004 /* Don't know */
301#define FRH_UNKNOWN2 0x0008 /* Don't know */
302
303typedef struct
304{
305 ULONG Type;
307 UCHAR IsNonResident;
308 UCHAR NameLength;
309 USHORT NameOffset;
312 union
313 {
314 // Resident attributes
315 struct
316 {
318 USHORT ValueOffset;
319 UCHAR Flags;
322 // Non-resident attributes
323 struct
324 {
325 ULONGLONG LowestVCN;
326 ULONGLONG HighestVCN;
327 USHORT MappingPairsOffset;
328 USHORT CompressionUnit;
329 UCHAR Reserved[4];
330 LONGLONG AllocatedSize;
332 LONGLONG InitializedSize;
333 LONGLONG CompressedSize;
335 };
337
338typedef struct
339{
348
349// The beginning and length of an attribute record are always aligned to an 8-byte boundary,
350// relative to the beginning of the file record.
351#define ATTR_RECORD_ALIGNMENT 8
352
353// Data runs are aligned to a 4-byte boundary, relative to the start of the attribute record
354#define DATA_RUN_ALIGNMENT 4
355
356// Value offset is aligned to a 4-byte boundary, relative to the start of the attribute record
357#define VALUE_OFFSET_ALIGNMENT 4
358
359typedef struct
360{
366 ULONG AlignmentOrReserved[3];
367#if 0
368 ULONG QuotaId;
369 ULONG SecurityId;
370 ULONGLONG QuotaCharge;
371 USN Usn;
372#endif
374
375
376typedef struct
377{
385 USHORT AlignmentOrReserved[3];
387
388
389typedef struct
390{
399 union
400 {
401 struct
402 {
405 } EaInfo;
407 } Extended;
412
413typedef struct
414{
419 UCHAR Padding[3];
421
422typedef struct
423{
428 UCHAR Padding[3];
431
432typedef struct
433{
438
439typedef struct
440{
441 union
442 {
443 struct
444 {
447 struct
448 {
452 } ViewIndex;
460
463
464// Keys are arranged in nodes as an ordered, linked list
465typedef struct _B_TREE_KEY
466{
468 B_TREE_FILENAME_NODE *LesserChild; // Child-Node. All the keys in this node will be sorted before IndexEntry
469 PINDEX_ENTRY_ATTRIBUTE IndexEntry; // must be last member for FIELD_OFFSET
471
472// Every Node is just an ordered list of keys.
473// Sub-nodes can be found attached to a key (if they exist).
474// A key's sub-node precedes that key in the ordered list.
476{
483
484typedef struct
485{
488
489typedef struct
490{
497
498typedef struct {
504
505#define IRPCONTEXT_CANWAIT 0x1
506#define IRPCONTEXT_COMPLETE 0x2
507#define IRPCONTEXT_QUEUE 0x4
508
509/* A run with no backing storage: zeroed on read, rejected on write */
510#define NTFS_SPARSE_LBO ((LONGLONG)-1)
511
512/* How many runs a request may span before the run list spills into pool. */
513#define NTFS_MAX_IO_RUNS_ON_STACK 8
514
515/* One physically contiguous piece of a transfer. Runs tile the caller's buffer:
516 * Runs[i].BufferOffset + Runs[i].ByteCount == Runs[i + 1].BufferOffset. */
517typedef struct _NTFS_IO_RUN
518{
519 LONGLONG Lbo; /* Byte offset on the volume, or NTFS_SPARSE_LBO */
520 ULONG BufferOffset; /* Byte offset into the caller's buffer */
522 PIRP SavedIrp; /* The IRP issued for this run; owned by blockdev.c */
524
525/* Small requests stay on the caller's stack; fragmented ones spill into pool */
526typedef struct _NTFS_IO_RUN_LIST
527{
534
535/* Shared between the issuing thread and every run's completion routine. The
536 * issuer waits on SyncEvent, which the last completing run sets. */
537typedef struct _NTFS_IO_CONTEXT
538{
539 volatile LONG IrpCount; /* Runs still in flight */
540 volatile LONG Status; /* First error seen, else STATUS_SUCCESS */
542
543 /* Covers the whole transfer; every run cuts a partial MDL from it. Either
544 * borrowed from the caller's IRP or built here; we only lock and release
545 * it in the latter case. */
547 PVOID MasterVa; /* Base address MasterMdl describes */
549
552
553typedef struct
554{
568
569typedef struct _NTFS_ATTR_CONTEXT
570{
579 ULONGLONG FileOwnerMFTIndex; /* If attribute list attribute, reference the original file */
582
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
588#define MAX_PATH 260
589
590typedef struct _FCB
591{
593
596
599
601 WCHAR *ObjectName; /* point on filename (250 chars max) in PathName */
602 WCHAR PathName[MAX_PATH]; /* path+filename 260 max */
603
606
608 struct _FCB* ParentFcb;
609
611
616
619
621
623
624typedef struct _FIND_ATTR_CONTXT
625{
636
637typedef struct
638{
640 USHORT Array[];
642
644
648{
649 PULONG Flags = &IrpContext->Flags;
650
651 *Flags &= ~IRPCONTEXT_COMPLETE;
653
654 return STATUS_PENDING;
655}
656
657/* attrib.c */
658
659//VOID
660//NtfsDumpAttribute(PATTRIBUTE Attribute);
661
664 PFILE_RECORD_HEADER FileRecord,
665 PNTFS_ATTR_RECORD AttributeAddress,
666 PCWSTR Name,
667 USHORT NameLength);
668
671 PNTFS_ATTR_RECORD AttributeAddress);
672
675 PNTFS_ATTR_CONTEXT AttrContext,
676 ULONG AttrOffset,
677 PFILE_RECORD_HEADER FileRecord,
678 ULONGLONG NextAssignedCluster,
679 ULONG RunLength);
680
683 PFILE_RECORD_HEADER FileRecord,
684 PNTFS_ATTR_RECORD AttributeAddress,
685 PCWSTR Name,
686 USHORT NameLength);
687
690 PFILE_RECORD_HEADER FileRecord,
691 PNTFS_ATTR_RECORD AttributeAddress,
692 PINDEX_ROOT_ATTRIBUTE NewIndexRoot,
693 ULONG RootLength,
694 PCWSTR Name,
695 USHORT NameLength);
696
699 PNTFS_ATTR_RECORD AttributeAddress,
700 PDEVICE_EXTENSION DeviceExt,
702 BOOLEAN CaseSensitive,
703 PULONGLONG ParentMftIndex);
704
707 PNTFS_ATTR_RECORD AttributeAddress);
708
711 PLARGE_MCB DataRunsMCB,
712 PULONGLONG pNextVBN);
713
716 ULONGLONG VcnCount,
717 PUCHAR RunBuffer,
718 ULONG MaxBufferSize,
719 PULONG UsedBufferSize);
720
721PUCHAR
722DecodeRun(PUCHAR DataRun,
723 LONGLONG *DataRunOffset,
724 ULONGLONG *DataRunLength);
725
727
728VOID
729NtfsDumpDataRuns(PVOID StartOfRun,
730 ULONGLONG CurrentLCN);
731
732VOID
734 PFILE_RECORD_HEADER FileRecord);
735
738 PFILE_RECORD_HEADER FileRecord);
739
742 PFILE_RECORD_HEADER FileRecord,
744
745UCHAR
746GetPackedByteCount(LONGLONG NumberToPack,
747 BOOLEAN IsSigned);
748
751 PNTFS_ATTR_RECORD Attribute,
752 PULONGLONG LastCluster);
753
756 PFILE_RECORD_HEADER FileRecord);
757
761
765
769 PFILE_RECORD_HEADER FileRecord,
770 BOOLEAN OnlyResident,
771 PNTFS_ATTR_RECORD * Attribute);
772
775 PNTFS_ATTR_RECORD * Attribute);
776
777VOID
779
782 PNTFS_ATTR_CONTEXT AttrContext,
783 ULONG AttrOffset,
784 PFILE_RECORD_HEADER FileRecord,
785 ULONG ClustersToFree);
786
787/* blockdev.c */
788
789VOID
791
796
797VOID
799
805 IN PNTFS_IO_RUN_LIST RunList,
806 IN BOOLEAN Override,
808
813 IN PIRP Irp,
815 IN PNTFS_IO_RUN_LIST RunList,
816 IN BOOLEAN Override,
818
825 IN BOOLEAN Override);
826
832 IN const PUCHAR Buffer);
833
836
839 IN ULONG DiskSector,
843 IN BOOLEAN Override);
844
852 IN BOOLEAN Override);
853
854
855/* btree.c */
856
857LONG
859 PB_TREE_KEY Key2,
860 BOOLEAN CaseSensitive);
861
864 PFILE_RECORD_HEADER FileRecordWithIndex,
865 /*PCWSTR IndexName,*/
866 PNTFS_ATTR_CONTEXT IndexRootContext,
867 PINDEX_ROOT_ATTRIBUTE IndexRoot,
868 PB_TREE *NewTree);
869
873 ULONG MaxIndexSize,
874 PINDEX_ROOT_ATTRIBUTE *IndexRoot,
875 ULONG *Length);
876
879
882 PFILENAME_ATTRIBUTE FileNameAttribute);
883
884VOID
886
887VOID
889
890VOID
892
893VOID
895
896VOID
900 ULONG Depth);
901
902VOID
906 ULONG Depth);
907
909CreateEmptyBTree(PB_TREE *NewTree);
910
913 ULONG IndexBufferSize,
914 ULONGLONG Vcn);
915
918
919ULONG
921
924 ULONGLONG FileReference,
925 PFILENAME_ATTRIBUTE FileNameAttribute,
927 BOOLEAN CaseSensitive,
928 ULONG MaxIndexRootSize,
929 ULONG IndexRecordSize,
930 PB_TREE_KEY *MedianKey,
931 PB_TREE_FILENAME_NODE *NewRightHandSibling);
932
935 PB_TREE_KEY SearchKey,
936 BOOLEAN CaseSensitive);
937
941 PB_TREE_KEY *MedianKey,
942 PB_TREE_FILENAME_NODE *NewRightHandSibling,
943 BOOLEAN CaseSensitive);
944
948 ULONG IndexBufferSize,
949 PFILE_RECORD_HEADER FileRecord);
950
953 PFILE_RECORD_HEADER FileRecord,
955 ULONG IndexBufferSize,
956 PNTFS_ATTR_CONTEXT IndexAllocationContext,
957 ULONG IndexAllocationOffset);
958
959/* close.c */
960
963
964
965/* close.c */
966
970
972NtfsClose(PNTFS_IRP_CONTEXT IrpContext);
973
974
975/* create.c */
976
978NtfsCreate(PNTFS_IRP_CONTEXT IrpContext);
979
983 BOOLEAN CaseSensitive,
984 BOOLEAN CanWait);
985
988
992 BOOLEAN CaseSensitive,
993 BOOLEAN CanWait);
994
995/* devctl.c */
996
999
1000
1001/* dirctl.c */
1002
1005 PFILE_RECORD_HEADER FileRecord,
1006 PCWSTR Stream,
1007 ULONG StreamLength,
1008 PULONGLONG AllocatedSize);
1009
1012
1013
1014/* dispatch.c */
1015
1019 PIRP Irp);
1020
1021
1022/* fastio.c */
1023
1026 BOOLEAN Wait);
1027
1028VOID NTAPI
1030
1033 BOOLEAN Wait);
1034
1035VOID NTAPI
1037
1038FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible;
1039FAST_IO_READ NtfsFastIoRead;
1040FAST_IO_WRITE NtfsFastIoWrite;
1041
1042
1043/* fcb.c */
1044
1047 PCWSTR Stream,
1048 PNTFS_VCB Vcb);
1049
1050VOID
1052
1053BOOLEAN
1055
1056BOOLEAN
1058
1059BOOLEAN
1061
1062BOOLEAN
1064
1065BOOLEAN
1067
1068VOID
1070 PNTFS_FCB Fcb);
1071
1072VOID
1074 PNTFS_FCB Fcb);
1075
1076VOID
1078 PNTFS_FCB Fcb);
1079
1080VOID
1084
1088
1091 PNTFS_FCB Fcb);
1092
1095
1098
1101 PNTFS_FCB Fcb,
1103
1106 PNTFS_FCB *pParentFCB,
1107 PNTFS_FCB *pFCB,
1108 PCWSTR pFileName,
1109 BOOLEAN CaseSensitive);
1110
1113 PNTFS_FCB pFCB,
1114 ULONG Type,
1115 PCWSTR Name,
1116 ULONG NameLength,
1117 PVOID * Data);
1118
1121 PNTFS_FCB DirectoryFCB,
1123 PCWSTR Stream,
1125 ULONGLONG MFTIndex,
1126 PNTFS_FCB * fileFCB);
1127
1128
1129/* finfo.c */
1130
1133
1137 PDEVICE_EXTENSION DeviceExt,
1138 ULONG IrpFlags,
1139 BOOLEAN CaseSensitive,
1141
1144
1145/* fsctl.c */
1146
1149
1150/* flush.c */
1151
1154
1155
1156/* mft.c */
1159 ULONGLONG DirectoryMftIndex,
1160 ULONGLONG FileReferenceNumber,
1161 PFILENAME_ATTRIBUTE FilenameAttribute,
1162 BOOLEAN CaseSensitive);
1163
1166 ULONGLONG DirectoryMftIndex,
1167 PFILENAME_ATTRIBUTE FilenameAttribute,
1168 BOOLEAN CaseSensitive);
1169
1172 ULONGLONG MftIndex);
1173
1176 ULONGLONG MftIndex,
1177 BOOLEAN CaseSensitive);
1178
1181 PDEVICE_EXTENSION DeviceExt,
1182 PULONGLONG DestinationIndex,
1183 BOOLEAN CanWait);
1184
1185VOID
1187
1190
1191VOID
1193
1194ULONG
1198 PCHAR Buffer,
1199 ULONG Length);
1200
1201ULONG
1205 PCHAR Buffer,
1206 ULONG Length,
1207 PIRP Irp);
1208
1213 const PUCHAR Buffer,
1214 ULONG Length,
1215 PULONG LengthWritten,
1216 PFILE_RECORD_HEADER FileRecord);
1217
1222 const PUCHAR Buffer,
1223 ULONG Length,
1224 PULONG LengthWritten,
1225 PFILE_RECORD_HEADER FileRecord,
1226 PIRP Irp);
1227
1230
1233 PNTFS_ATTR_CONTEXT AttrContext,
1234 PFILE_RECORD_HEADER FileRecord,
1235 ULONG AttrOffset,
1236 ULONG DataSize);
1237
1240 PNTFS_ATTR_RECORD FirstAttributeToMove,
1241 ULONG FirstAttributeOffset,
1242 ULONG_PTR MoveTo);
1243
1246 PNTFS_FCB Fcb,
1247 PNTFS_ATTR_CONTEXT AttrContext,
1248 ULONG AttrOffset,
1249 PFILE_RECORD_HEADER FileRecord,
1251
1252VOID
1254 PNTFS_ATTR_RECORD AttrEnd,
1255 ULONG EndMarker);
1256
1259 PNTFS_ATTR_CONTEXT AttrContext,
1260 ULONG AttrOffset,
1261 PFILE_RECORD_HEADER FileRecord,
1263
1267 _In_ PNTFS_ATTR_CONTEXT AttrContext,
1268 _In_ ULONG AttrOffset,
1269 _In_ PFILE_RECORD_HEADER FileRecord,
1271
1275
1278 PNTFS_ATTR_CONTEXT AttrContext,
1279 ULONG AttrOffset,
1280 PFILE_RECORD_HEADER FileRecord,
1282
1285
1286BOOLEAN
1289 PINDEX_ENTRY_ATTRIBUTE IndexEntry,
1290 BOOLEAN DirSearch,
1291 BOOLEAN CaseSensitive);
1292
1295
1298
1303
1304/* NTFS duplicates a file's sizes, timestamps and attributes into the $FILE_NAME
1305 * of its entry in the parent directory's index, so a directory can be
1306 * enumerated without reading every file record. These flags say which of them
1307 * the caller changed and so need refreshing there. */
1308#define NTFS_FILENAME_UPDATE_SIZES 0x1
1309#define NTFS_FILENAME_UPDATE_TIMES 0x2
1310#define NTFS_FILENAME_UPDATE_ATTRS 0x4
1311
1313{
1315
1316 /* NTFS_FILENAME_UPDATE_SIZES */
1319
1320 /* NTFS_FILENAME_UPDATE_TIMES */
1325
1326 /* NTFS_FILENAME_UPDATE_ATTRS */
1329
1332 PFILE_RECORD_HEADER MftRecord,
1333 PCHAR IndexRecord,
1334 ULONG IndexBlockSize,
1335 PINDEX_ENTRY_ATTRIBUTE FirstEntry,
1336 PINDEX_ENTRY_ATTRIBUTE LastEntry,
1338 PULONG StartEntry,
1339 PULONG CurrentEntry,
1340 BOOLEAN DirSearch,
1342 BOOLEAN CaseSensitive);
1343
1346 PFILE_RECORD_HEADER FileRecord,
1347 ULONGLONG MFTIndex,
1348 ULONG Flags,
1349 BOOLEAN CaseSensitive);
1350
1353 ULONGLONG ParentMFTIndex,
1355 BOOLEAN DirSearch,
1357 BOOLEAN CaseSensitive);
1358
1361 ULONGLONG MftIndex,
1362 PFILE_RECORD_HEADER FileRecord);
1363
1366 PFILE_RECORD_HEADER MftRecord,
1367 ULONG Type,
1368 PCWSTR Name,
1369 ULONG NameLength,
1370 PNTFS_ATTR_CONTEXT * AttrCtx,
1371 PULONG Offset);
1372
1373VOID
1377 ULONGLONG vcn,
1378 ULONG count,
1379 PVOID buffer);
1380
1384
1388
1391 ULONGLONG lcn,
1392 ULONG count,
1393 PVOID buffer);
1394
1395VOID
1399
1402 PUNICODE_STRING PathName,
1403 BOOLEAN CaseSensitive,
1404 PFILE_RECORD_HEADER *FileRecord,
1405 PULONGLONG MFTIndex);
1406
1409 PUNICODE_STRING PathName,
1410 BOOLEAN CaseSensitive,
1411 PFILE_RECORD_HEADER *FileRecord,
1412 PULONGLONG MFTIndex,
1413 ULONGLONG CurrentMFTIndex);
1414
1415VOID
1417 PFILE_RECORD_HEADER FileRecord);
1418
1421 PUNICODE_STRING SearchPattern,
1422 PULONG FirstEntry,
1423 PFILE_RECORD_HEADER *FileRecord,
1424 PULONGLONG MFTIndex,
1425 ULONGLONG CurrentMFTIndex,
1426 BOOLEAN CaseSensitive);
1427
1431 _In_ ULONGLONG MftIndex,
1433
1436 ULONGLONG MFTIndex,
1438 PULONG FirstEntry,
1439 BOOLEAN DirSearch,
1440 BOOLEAN CaseSensitive,
1441 ULONGLONG *OutMFTIndex);
1442
1443/* misc.c */
1444
1445BOOLEAN
1447
1450 PIRP Irp);
1451
1452PVOID
1454 BOOLEAN Paging);
1455
1458 IN ULONG Length,
1460
1461#if 0
1462BOOLEAN
1463wstrcmpjoki(PWSTR s1, PWSTR s2);
1464
1465VOID
1466CdfsSwapString(PWCHAR Out,
1467 PUCHAR In,
1468 ULONG Count);
1469#endif
1470
1471VOID
1472NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
1474
1475
1476/* rw.c */
1477
1479NtfsRead(PNTFS_IRP_CONTEXT IrpContext);
1480
1482NtfsWrite(PNTFS_IRP_CONTEXT IrpContext);
1483
1484
1485/* volinfo.c */
1486
1489 ULONG FirstDesiredCluster,
1490 ULONG DesiredClusters,
1491 PULONG FirstAssignedCluster,
1492 PULONG AssignedClusters);
1493
1496
1499 _In_ PDEVICE_EXTENSION DeviceExt);
1500
1501VOID
1503 _In_ PDEVICE_EXTENSION DeviceExt);
1504
1507 _In_ PDEVICE_EXTENSION DeviceExt,
1508 _In_ ULONG FirstCluster,
1509 _In_ ULONG ClusterCount);
1510
1513
1516
1517
1518/* ntfs.c */
1519
1520CODE_SEG("INIT")
1521DRIVER_INITIALIZE DriverEntry;
1522
1523CODE_SEG("INIT")
1524VOID
1525NTAPI
1527
1528#endif /* NTFS_H */
#define CODE_SEG(...)
CRegistryTree Tree
Type
Definition: Type.h:7
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
Definition: acpixf.h:658
unsigned char BOOLEAN
Definition: actypes.h:127
@ INIT
Definition: arabic.c:42
LONG NTSTATUS
Definition: precomp.h:26
@ Update
Definition: registry.c:565
struct NTFS_ATTR_RECORD * PNTFS_ATTR_RECORD
struct NTFS_ATTR_CONTEXT * PNTFS_ATTR_CONTEXT
_In_ PFCB _In_ LONGLONG StartingOffset
Definition: cdprocs.h:291
_In_ PFCB Fcb
Definition: cdprocs.h:159
Definition: bufpool.h:45
_In_ PIRP Irp
Definition: csq.h:116
UINT Depth
Definition: d3d12.idl:4644
@ NonResident
Definition: data.h:24
@ Resident
Definition: data.h:23
LPWSTR Name
Definition: desk.c:124
@ Out
@ In
_In_ ULONG InputBufferSize
Definition: dispmprt.h:616
_In_ ULONG _In_ ULONG OutputBufferSize
Definition: dispmprt.h:618
_In_ ULONG AllocationSize
Definition: dispmprt.h:712
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define MAX_PATH
Definition: compat.h:34
@ Empty
Definition: npfs.h:126
FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible
Definition: ntfs.h:1038
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)
Definition: ntfs.h:647
VOID NtfsDumpData(ULONG_PTR Buffer, ULONG Length)
Definition: mft.c:4174
ULONGLONG NtfsGetFileSize(PDEVICE_EXTENSION DeviceExt, PFILE_RECORD_HEADER FileRecord, PCWSTR Stream, ULONG StreamLength, PULONGLONG AllocatedSize)
Definition: dirctl.c:38
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)
Definition: blockdev.c:788
BOOLEAN NTAPI NtfsAcqReadAhead(PVOID Context, BOOLEAN Wait)
Definition: fastio.c:60
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)
Definition: attrib.c:591
NTSTATUS NtfsDeviceControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: devctl.c:36
PSTANDARD_INFORMATION GetStandardInformationFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:1970
VOID DumpBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, ULONG Number, ULONG Depth)
Definition: btree.c:1588
struct _NTFS_IO_RUN NTFS_IO_RUN
BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb)
Definition: fcb.c:132
struct _B_TREE_KEY * PB_TREE_KEY
enum ATTRIBUTE_TYPE * PATTRIBUTE_TYPE
PNTFS_GLOBAL_DATA NtfsGlobalData
Definition: ntfs.c:36
NTSTATUS ReadFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG index, PFILE_RECORD_HEADER file)
Definition: mft.c:1805
struct FILENAME_ATTRIBUTE * PFILENAME_ATTRIBUTE
NTSTATUS ConvertLargeMCBToDataRuns(PLARGE_MCB DataRunsMCB, ULONGLONG VcnCount, PUCHAR RunBuffer, ULONG MaxBufferSize, PULONG UsedBufferSize)
Definition: attrib.c:917
PUCHAR DecodeRun(PUCHAR DataRun, LONGLONG *DataRunOffset, ULONGLONG *DataRunLength)
Definition: attrib.c:1010
NTSTATUS GetLastClusterInDataRun(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_RECORD Attribute, PULONGLONG LastCluster)
Definition: attrib.c:1938
NTSTATUS NtfsReadFCBAttribute(PNTFS_VCB Vcb, PNTFS_FCB pFCB, ULONG Type, PCWSTR Name, ULONG NameLength, PVOID *Data)
Definition: fcb.c:779
PNTFS_FCB NtfsGrabFCBFromTable(PNTFS_VCB Vcb, PCWSTR FileName)
Definition: fcb.c:264
VOID DestroyBTreeNode(PB_TREE_FILENAME_NODE Node)
Definition: btree.c:1516
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:487
struct _NTFS_FILENAME_UPDATE * PNTFS_FILENAME_UPDATE
#define IRPCONTEXT_QUEUE
Definition: ntfs.h:507
NTSTATUS ConvertDataRunsToLargeMCB(PUCHAR DataRun, PLARGE_MCB DataRunsMCB, PULONGLONG pNextVBN)
Definition: attrib.c:842
BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb)
Definition: fcb.c:158
NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:307
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)
Definition: mft.c:4105
NTSTATUS UpdateFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MftIndex, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:2260
NTSTATUS NtfsWriteVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt, _In_ ULONG FirstCluster, _In_ ULONG ClusterCount)
Definition: volinfo.c:167
NTSTATUS NtfsFlushDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: blockdev.c:964
VOID ReadVCN(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER file, ATTRIBUTE_TYPE type, ULONGLONG vcn, ULONG count, PVOID buffer)
VOID NtfsDumpDataRuns(PVOID StartOfRun, ULONGLONG CurrentLCN)
Definition: attrib.c:1785
NTSTATUS NtfsUpdateDuplicatedInformation(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, ULONGLONG MFTIndex, ULONG Flags, BOOLEAN CaseSensitive)
Definition: mft.c:1864
NTSTATUS CreateBTreeFromIndex(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecordWithIndex, PNTFS_ATTR_CONTEXT IndexRootContext, PINDEX_ROOT_ATTRIBUTE IndexRoot, PB_TREE *NewTree)
Definition: btree.c:687
NTSTATUS NtfsLookupFile(PDEVICE_EXTENSION Vcb, PUNICODE_STRING PathName, BOOLEAN CaseSensitive, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex)
Definition: mft.c:4164
VOID ReleaseAttributeContext(PNTFS_ATTR_CONTEXT Context)
Definition: mft.c:104
struct _NTFS_IO_RUN_LIST NTFS_IO_RUN_LIST
NTSTATUS NtfsRemoveKey(PB_TREE_FILENAME_NODE Node, PB_TREE_KEY SearchKey, BOOLEAN CaseSensitive)
Definition: btree.c:2065
ULONG GetFileNameAttributeLength(PFILENAME_ATTRIBUTE FileNameAttribute)
Definition: attrib.c:2008
NTSTATUS NtfsIsDirectoryEmpty(_In_ PDEVICE_EXTENSION Vcb, _In_ ULONGLONG MftIndex, _Out_ PBOOLEAN Empty)
Definition: mft.c:4423
VOID NtfsFileFlagsToAttributes(ULONG NtfsAttributes, PULONG FileAttributes)
Definition: misc.c:105
DRIVER_DISPATCH NtfsFsdDispatch
Definition: ntfs.h:1016
NTSTATUS NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
Definition: close.c:40
FAST_IO_READ NtfsFastIoRead
Definition: ntfs.h:1039
struct NTFS_CCB * PNTFS_CCB
struct _BIOS_PARAMETERS_BLOCK BIOS_PARAMETERS_BLOCK
NTSTATUS NtfsLoadVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt)
Definition: volinfo.c:49
NTSTATUS FindFirstAttribute(PFIND_ATTR_CONTXT Context, PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, BOOLEAN OnlyResident, PNTFS_ATTR_RECORD *Attribute)
Definition: attrib.c:1413
LONG CompareTreeKeys(PB_TREE_KEY Key1, PB_TREE_KEY Key2, BOOLEAN CaseSensitive)
Definition: btree.c:422
NTSTATUS SplitBTreeNode(PB_TREE Tree, PB_TREE_FILENAME_NODE Node, PB_TREE_KEY *MedianKey, PB_TREE_FILENAME_NODE *NewRightHandSibling, BOOLEAN CaseSensitive)
Definition: btree.c:2136
struct NTFS_IRP_CONTEXT * PNTFS_IRP_CONTEXT
VOID DestroyBTreeKey(PB_TREE_KEY Key)
Definition: btree.c:1504
NTSTATUS NtfsRemoveFilenameFromDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
Definition: mft.c:3166
struct _FIND_ATTR_CONTXT * PFIND_ATTR_CONTXT
struct _NTFS_IO_RUN_LIST * PNTFS_IO_RUN_LIST
struct _BOOT_SECTOR * PBOOT_SECTOR
DRIVER_INITIALIZE DriverEntry
Definition: ntfs.h:1521
NTSTATUS WriteAttributeFromIrp(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, const PUCHAR Buffer, ULONG Length, PULONG LengthWritten, PFILE_RECORD_HEADER FileRecord, PIRP Irp)
Definition: mft.c:1546
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)
Definition: mft.c:753
struct _B_TREE_FILENAME_NODE * PB_TREE_FILENAME_NODE
NTSTATUS FindFirstAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
Definition: attrib.c:1337
NTSTATUS NtfsDeleteFileRecord(PDEVICE_EXTENSION DeviceExt, ULONGLONG MftIndex, BOOLEAN CaseSensitive)
Definition: mft.c:3339
NTSTATUS FreeClusters(PNTFS_VCB Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, ULONG ClustersToFree)
Definition: attrib.c:1101
BOOLEAN NtfsIsIrpTopLevel(PIRP Irp)
Definition: misc.c:43
struct DEVICE_EXTENSION NTFS_VCB
PNTFS_IRP_CONTEXT NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp)
Definition: misc.c:66
NTSTATUS AddFileName(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, PULONGLONG ParentMftIndex)
Definition: attrib.c:234
struct NTFS_RECORD_HEADER * PNTFS_RECORD_HEADER
VOID FindCloseAttribute(PFIND_ATTR_CONTXT Context)
Definition: attrib.c:1495
VOID NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
Definition: ntfs.c:170
NTSTATUS UpdateMftMirror(PNTFS_VCB Vcb)
Definition: mft.c:3559
ULONGLONG GetIndexEntryVCN(PINDEX_ENTRY_ATTRIBUTE IndexEntry)
Definition: btree.c:1646
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:1696
NTSTATUS NtfsClose(PNTFS_IRP_CONTEXT IrpContext)
Definition: close.c:87
NTSTATUS AddBitmap(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
Definition: attrib.c:76
PNTFS_ATTR_CONTEXT PrepareAttributeContext(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:41
BOOLEAN NtfsFCBIsReparsePoint(PNTFS_FCB Fcb)
Definition: fcb.c:139
ULONGLONG AttributeDataLength(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:259
struct _FIND_ATTR_CONTXT FIND_ATTR_CONTXT
PFILENAME_ATTRIBUTE GetFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord, UCHAR NameType)
Definition: attrib.c:1839
NTSTATUS AddIndexAllocation(PNTFS_VCB Vcb, PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress, PCWSTR Name, USHORT NameLength)
Definition: attrib.c:380
NTSTATUS NtfsSetEndOfFile(PNTFS_FCB Fcb, PFILE_OBJECT FileObject, PDEVICE_EXTENSION DeviceExt, ULONG IrpFlags, BOOLEAN CaseSensitive, PLARGE_INTEGER NewFileSize)
Definition: finfo.c:625
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)
Definition: mft.c:2084
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
ULONG ReadAttribute(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length)
Definition: mft.c:1494
struct VOLINFO_ATTRIBUTE * PVOLINFO_ATTRIBUTE
VOID SetFileRecordEnd(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttrEnd, ULONG EndMarker)
Definition: mft.c:706
NTSTATUS NtfsQueryInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: finfo.c:470
struct _NTFS_IO_CONTEXT * PNTFS_IO_CONTEXT
ULONGLONG GetAllocationOffsetFromVCN(PDEVICE_EXTENSION DeviceExt, ULONG IndexBufferSize, ULONGLONG Vcn)
Definition: btree.c:1635
NTSTATUS UpdateIndexAllocation(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG IndexBufferSize, PFILE_RECORD_HEADER FileRecord)
Definition: btree.c:1187
ULONGLONG NtfsGetFreeClusters(PDEVICE_EXTENSION DeviceExt)
Definition: volinfo.c:193
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:431
BOOLEAN NTAPI NtfsAcqLazyWrite(PVOID Context, BOOLEAN Wait)
Definition: fastio.c:39
VOID DestroyBTree(PB_TREE Tree)
Definition: btree.c:1547
NTSTATUS NtfsCreateFileRecord(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
Definition: create.c:1094
NTSTATUS AddFixupArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
Definition: mft.c:3444
NTSTATUS NtfsLockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
Definition: misc.c:158
NTSTATUS NtfsFlushBuffers(PNTFS_IRP_CONTEXT IrpContext)
Definition: flush.c:27
struct _BIOS_PARAMETERS_BLOCK * PBIOS_PARAMETERS_BLOCK
VOID NtfsFreeIoRunList(IN OUT PNTFS_IO_RUN_LIST RunList)
Definition: blockdev.c:140
NTSTATUS DemoteBTreeRoot(PB_TREE Tree)
Definition: btree.c:1094
NTSTATUS SetNonResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:937
PNTFS_ATTR_RECORD MoveAttributes(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_RECORD FirstAttributeToMove, ULONG FirstAttributeOffset, ULONG_PTR MoveTo)
Definition: mft.c:512
ULONG GetSizeOfIndexEntries(PB_TREE_FILENAME_NODE Node)
Definition: btree.c:860
struct INDEX_ROOT_ATTRIBUTE * PINDEX_ROOT_ATTRIBUTE
NTSTATUS NtfsRead(PNTFS_IRP_CONTEXT IrpContext)
Definition: rw.c:308
VOID NtfsRemoveFCBFromTable(_In_ PNTFS_VCB Vcb, _In_ PNTFS_FCB Fcb)
Definition: fcb.c:243
NTSTATUS UpdateFileNameRecord(PDEVICE_EXTENSION Vcb, ULONGLONG ParentMFTIndex, PUNICODE_STRING FileName, BOOLEAN DirSearch, PNTFS_FILENAME_UPDATE Update, BOOLEAN CaseSensitive)
Definition: mft.c:2060
VOID DumpBTree(PB_TREE Tree)
Definition: btree.c:1627
NTSTATUS NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: fsctl.c:1043
NTSTATUS NtfsWrite(PNTFS_IRP_CONTEXT IrpContext)
Definition: rw.c:695
NTSTATUS CreateEmptyBTree(PB_TREE *NewTree)
Definition: btree.c:353
VOID NtfsDumpFileAttributes(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:1820
NTSTATUS NtfsAddFilenameToDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, ULONGLONG FileReferenceNumber, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
Definition: mft.c:2918
struct DEVICE_EXTENSION * PNTFS_VCB
struct _NTFS_IO_CONTEXT NTFS_IO_CONTEXT
NTSTATUS AddData(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
Definition: attrib.c:164
struct _FCB NTFS_FCB
#define NTFS_MAX_IO_RUNS_ON_STACK
Definition: ntfs.h:513
VOID NTAPI NtfsRelLazyWrite(PVOID Context)
Definition: fastio.c:51
VOID EnumerAttribute(PFILE_RECORD_HEADER file, PDEVICE_EXTENSION Vcb, PDEVICE_OBJECT DeviceObject)
ULONGLONG AttributeAllocatedLength(PNTFS_ATTR_RECORD AttrRecord)
Definition: mft.c:249
struct _EXTENDED_BIOS_PARAMETERS_BLOCK * PEXTENDED_BIOS_PARAMETERS_BLOCK
NTSTATUS AddNewMftEntry(PFILE_RECORD_HEADER FileRecord, PDEVICE_EXTENSION DeviceExt, PULONGLONG DestinationIndex, BOOLEAN CanWait)
Definition: mft.c:2351
struct NTFS_ATTRIBUTE_LIST_ITEM * PNTFS_ATTRIBUTE_LIST_ITEM
ATTRIBUTE_TYPE
Definition: ntfs.h:187
@ AttributeVolumeName
Definition: ntfs.h:193
@ AttributeEnd
Definition: ntfs.h:204
@ AttributeIndexRoot
Definition: ntfs.h:196
@ AttributePropertySet
Definition: ntfs.h:202
@ AttributeReparsePoint
Definition: ntfs.h:199
@ AttributeFileName
Definition: ntfs.h:190
@ AttributeEAInformation
Definition: ntfs.h:200
@ AttributeStandardInformation
Definition: ntfs.h:188
@ AttributeEA
Definition: ntfs.h:201
@ AttributeAttributeList
Definition: ntfs.h:189
@ AttributeVolumeInformation
Definition: ntfs.h:194
@ AttributeSecurityDescriptor
Definition: ntfs.h:192
@ AttributeIndexAllocation
Definition: ntfs.h:197
@ AttributeObjectId
Definition: ntfs.h:191
@ AttributeLoggedUtilityStream
Definition: ntfs.h:203
@ AttributeData
Definition: ntfs.h:195
@ AttributeBitmap
Definition: ntfs.h:198
NTSTATUS CreateIndexRootFromBTree(PDEVICE_EXTENSION DeviceExt, PB_TREE Tree, ULONG MaxIndexSize, PINDEX_ROOT_ATTRIBUTE *IndexRoot, ULONG *Length)
Definition: btree.c:915
BOOLEAN NtfsFCBIsEncrypted(PNTFS_FCB Fcb)
Definition: fcb.c:152
NTSTATUS NtfsQueryVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: volinfo.c:430
NTSTATUS NtfsSetVolumeInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: volinfo.c:507
VOID NtfsFreeVolumeBitmap(_In_ PDEVICE_EXTENSION DeviceExt)
Definition: volinfo.c:132
VOID NtfsDumpFileRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:4211
NTSTATUS NtfsWriteDisk(IN PDEVICE_OBJECT DeviceObject, IN LONGLONG StartingOffset, IN ULONG Length, IN ULONG SectorSize, IN const PUCHAR Buffer)
Definition: blockdev.c:907
NTSTATUS NtfsAddIoRun(IN OUT PNTFS_IO_RUN_LIST RunList, IN LONGLONG Lbo, IN ULONG ByteCount)
Definition: blockdev.c:74
NTSTATUS NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: dirctl.c:793
PNTFS_FCB NtfsCreateFCB(PCWSTR FileName, PCWSTR Stream, PNTFS_VCB Vcb)
Definition: fcb.c:67
struct _B_TREE_KEY B_TREE_KEY
NTSTATUS NtfsAttachFCBToFileObject(PNTFS_VCB Vcb, PNTFS_FCB Fcb, PFILE_OBJECT FileObject)
Definition: fcb.c:506
NTSTATUS NtfsCreateDirectory(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, BOOLEAN CaseSensitive, BOOLEAN CanWait)
Definition: create.c:883
struct _NTFS_FILENAME_UPDATE NTFS_FILENAME_UPDATE
struct _FCB * PNTFS_FCB
NTSTATUS NtfsCreate(PNTFS_IRP_CONTEXT IrpContext)
Definition: create.c:824
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:1011
BOOLEAN CompareFileName(PDEVICE_EXTENSION Vcb, PUNICODE_STRING FileName, PINDEX_ENTRY_ATTRIBUTE IndexEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive)
Definition: mft.c:3491
ULONG ReadAttributeToIrp(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length, PIRP Irp)
Definition: mft.c:1425
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:1029
NTSTATUS FreeMftEntry(PDEVICE_EXTENSION DeviceExt, ULONGLONG MftIndex)
Definition: mft.c:3205
NTSTATUS SetResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:1020
NTSTATUS NtfsFindMftRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MFTIndex, PUNICODE_STRING FileName, PULONG FirstEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive, ULONGLONG *OutMFTIndex)
Definition: mft.c:4020
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:1698
NTSTATUS NtfsTrimAllocation(_In_ PNTFS_FCB Fcb)
Definition: mft.c:842
NTSTATUS ReadLCN(PDEVICE_EXTENSION Vcb, ULONGLONG lcn, ULONG count, PVOID buffer)
Definition: mft.c:3472
struct _FILE_RECORD_HEADER * PFILE_RECORD_HEADER
NTSTATUS NtfsLoadUpCaseTable(PDEVICE_EXTENSION Vcb)
Definition: mft.c:1799
BOOLEAN NtfsFCBIsCompressed(PNTFS_FCB Fcb)
Definition: fcb.c:146
VOID NTAPI NtfsRelReadAhead(PVOID Context)
Definition: fastio.c:72
struct NTFS_GLOBAL_DATA * PNTFS_GLOBAL_DATA
PB_TREE_KEY CreateBTreeKeyFromFilename(ULONGLONG FileReference, PFILENAME_ATTRIBUTE FileNameAttribute)
Definition: btree.c:1466
NTSTATUS FixupUpdateSequenceArray(PDEVICE_EXTENSION Vcb, PNTFS_RECORD_HEADER Record)
Definition: mft.c:2294
NTSTATUS NtfsCleanup(PNTFS_IRP_CONTEXT IrpContext)
Definition: cleanup.c:171
NTSTATUS FindNextAttribute(PFIND_ATTR_CONTXT Context, PNTFS_ATTR_RECORD *Attribute)
Definition: attrib.c:1461
NTSTATUS InternalSetResidentAttributeLength(PDEVICE_EXTENSION DeviceExt, PNTFS_ATTR_CONTEXT AttrContext, PFILE_RECORD_HEADER FileRecord, ULONG AttrOffset, ULONG DataSize)
Definition: mft.c:542
VOID NtfsDestroyFCB(PNTFS_FCB Fcb)
Definition: fcb.c:120
NTSTATUS NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pParentFCB, PNTFS_FCB *pFCB, PCWSTR pFileName, BOOLEAN CaseSensitive)
Definition: fcb.c:647
PNTFS_FCB NtfsOpenRootFCB(PNTFS_VCB Vcb)
Definition: fcb.c:416
NTSTATUS NtfsFindFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING SearchPattern, PULONG FirstEntry, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex, BOOLEAN CaseSensitive)
Definition: mft.c:4232
NTSTATUS NtfsSetInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: finfo.c:1720
PVOID NtfsGetUserBuffer(PIRP Irp, BOOLEAN Paging)
Definition: misc.c:120
NTSTATUS FindNextAttributeListItem(PFIND_ATTR_CONTXT Context, PNTFS_ATTRIBUTE_LIST_ITEM *Item)
Definition: attrib.c:1351
UCHAR GetPackedByteCount(LONGLONG NumberToPack, BOOLEAN IsSigned)
Definition: attrib.c:1876
struct _EXTENDED_BIOS_PARAMETERS_BLOCK EXTENDED_BIOS_PARAMETERS_BLOCK
struct _B_TREE_FILENAME_NODE B_TREE_FILENAME_NODE
Definition: ntfs.h:462
VOID NtfsGrabFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:165
struct NTFSIDENTIFIER * PNTFSIDENTIFIER
struct ATTRIBUTE_LIST * PATTRIBUTE_LIST
VOID NtfsAddFCBToTable(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:223
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:1324
VOID NtfsInitIoRunList(OUT PNTFS_IO_RUN_LIST RunList)
Definition: blockdev.c:40
FAST_IO_WRITE NtfsFastIoWrite
Definition: ntfs.h:1040
struct _FILE_RECORD_HEADER FILE_RECORD_HEADER
VOID NtfsReleaseFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:182
PFILENAME_ATTRIBUTE GetBestFileNameFromRecord(PDEVICE_EXTENSION Vcb, PFILE_RECORD_HEADER FileRecord)
Definition: attrib.c:2015
NTSTATUS AddStandardInformation(PFILE_RECORD_HEADER FileRecord, PNTFS_ATTR_RECORD AttributeAddress)
Definition: attrib.c:783
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)
Definition: blockdev.c:743
NTSTATUS NtfsAllocateClusters(PDEVICE_EXTENSION DeviceExt, ULONG FirstDesiredCluster, ULONG DesiredClusters, PULONG FirstAssignedCluster, PULONG AssignedClusters)
Definition: volinfo.c:213
struct _BOOT_SECTOR BOOT_SECTOR
struct INDEX_HEADER_ATTRIBUTE * PINDEX_HEADER_ATTRIBUTE
PNTFS_FCB NtfsMakeRootFCB(PNTFS_VCB Vcb)
Definition: fcb.c:361
VOID DumpBTreeKey(PB_TREE Tree, PB_TREE_KEY Key, ULONG Number, ULONG Depth)
Definition: btree.c:1554
struct B_TREE * PB_TREE
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:836
struct _NTFS_INFO * PNTFS_INFO
PFILE_RECORD_HEADER NtfsCreateEmptyFileRecord(PDEVICE_EXTENSION DeviceExt)
Definition: create.c:1026
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 KSPIN_LOCK
Definition: env_spec_w32.h:72
ULONG ERESOURCE
Definition: env_spec_w32.h:594
IN PFCB IN VBO OUT PLBO Lbo
Definition: fatprocs.h:309
_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:1236
FP_OP Operation
Definition: fpcontrol.c:150
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint buffer
Definition: glext.h:5915
GLuint index
Definition: glext.h:6031
struct S1 s1
static IStream Stream
Definition: htmldoc.c:1115
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_In_ ULONG Number
Definition: haltypes.h:1940
_In_ BOOLEAN _In_ USHORT Directory
Definition: rtlfuncs.h:3962
DRIVER_DISPATCH(nfs41_FsdDispatch)
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
int Count
Definition: noreturn.cpp:7
LONGLONG USN
Definition: ntbasedef.h:400
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:395
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
ULONG SectorCount
Definition: part_brfr.c:22
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
char CHAR
Definition: pedump.c:57
#define Vcb
Definition: cdprocs.h:1415
PCWSTR s2
Definition: shell32_main.h:38
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
_In_ PVOID Context
Definition: storport.h:2325
ULONGLONG StartVcn
Definition: ntfs.h:382
UCHAR NameLength
Definition: ntfs.h:380
ATTRIBUTE_TYPE AttributeType
Definition: ntfs.h:378
ULONGLONG FileReferenceNumber
Definition: ntfs.h:383
USHORT Length
Definition: ntfs.h:379
UCHAR NameOffset
Definition: ntfs.h:381
USHORT AttributeNumber
Definition: ntfs.h:384
Definition: ntfs.h:485
PB_TREE_FILENAME_NODE RootNode
Definition: ntfs.h:486
struct _FILE_RECORD_HEADER * MasterFileTable
Definition: ntfs.h:128
KSPIN_LOCK FcbListLock
Definition: ntfs.h:120
struct _NTFS_ATTR_CONTEXT * MFTContext
Definition: ntfs.h:127
RTL_BITMAP ClusterBitmap
Definition: ntfs.h:117
struct _NTFS_ATTR_CONTEXT * BitmapContext
Definition: ntfs.h:114
PULONG BitmapBuffer
Definition: ntfs.h:115
ULONG OpenHandleCount
Definition: ntfs.h:142
PFILE_OBJECT StreamFileObject
Definition: ntfs.h:125
NTFS_INFO NtfsInfo
Definition: ntfs.h:131
struct _FCB * VolumeFcb
Definition: ntfs.h:129
PDEVICE_OBJECT StorageDevice
Definition: ntfs.h:124
LIST_ENTRY FcbListHead
Definition: ntfs.h:121
ULONG Flags
Definition: ntfs.h:141
ULONG MftDataOffset
Definition: ntfs.h:140
ULONGLONG FreeClusterCount
Definition: ntfs.h:118
NPAGED_LOOKASIDE_LIST FileRecLookasideList
Definition: ntfs.h:133
ERESOURCE IndexResource
Definition: ntfs.h:109
PWCHAR UpCaseTable
Definition: ntfs.h:138
ERESOURCE BitmapResource
Definition: ntfs.h:113
ERESOURCE DirResource
Definition: ntfs.h:104
ULONG BitmapSize
Definition: ntfs.h:116
NTFSIDENTIFIER Identifier
Definition: ntfs.h:102
ULONGLONG LastWriteTime
Definition: ntfs.h:393
UCHAR NameLength
Definition: ntfs.h:408
ULONGLONG DirectoryFileReferenceNumber
Definition: ntfs.h:391
ULONGLONG DataSize
Definition: ntfs.h:397
UCHAR NameType
Definition: ntfs.h:409
ULONGLONG AllocatedSize
Definition: ntfs.h:396
ULONG FileAttributes
Definition: ntfs.h:398
ULONGLONG LastAccessTime
Definition: ntfs.h:395
USHORT AlignmentOrReserved
Definition: ntfs.h:404
ULONGLONG CreationTime
Definition: ntfs.h:392
USHORT PackedEaSize
Definition: ntfs.h:403
ULONG ReparseTag
Definition: ntfs.h:406
ULONGLONG ChangeTime
Definition: ntfs.h:394
USHORT USN
Definition: ntfs.h:639
INDEX_HEADER_ATTRIBUTE Header
Definition: ntfs.h:436
ULONGLONG VCN
Definition: ntfs.h:435
NTFS_RECORD_HEADER Ntfs
Definition: ntfs.h:434
Definition: ntfs.h:440
ULONGLONG IndexedFile
Definition: ntfs.h:445
FILENAME_ATTRIBUTE FileName
Definition: ntfs.h:458
USHORT Length
Definition: ntfs.h:454
USHORT KeyLength
Definition: ntfs.h:455
USHORT Reserved
Definition: ntfs.h:457
USHORT DataLength
Definition: ntfs.h:450
USHORT DataOffset
Definition: ntfs.h:449
ULONG Reserved
Definition: ntfs.h:451
USHORT Flags
Definition: ntfs.h:456
ULONG FirstEntryOffset
Definition: ntfs.h:415
ULONG TotalSizeOfEntries
Definition: ntfs.h:416
ULONG AttributeType
Definition: ntfs.h:424
ULONG CollationRule
Definition: ntfs.h:425
INDEX_HEADER_ATTRIBUTE Header
Definition: ntfs.h:429
UCHAR ClustersPerIndexRecord
Definition: ntfs.h:427
ULONG SizeOfEntry
Definition: ntfs.h:426
ULONG Type
Definition: ntfs.h:96
ULONG Size
Definition: ntfs.h:97
ULONGLONG StartingVCN
Definition: ntfs.h:344
ULONGLONG MFTIndex
Definition: ntfs.h:345
Definition: ntfs.h:151
PFILE_OBJECT PtrFileObject
Definition: ntfs.h:154
LIST_ENTRY NextCCB
Definition: ntfs.h:153
NTFSIDENTIFIER Identifier
Definition: ntfs.h:152
ULONG LastCluster
Definition: ntfs.h:160
ULONG Flags
Definition: ntfs.h:162
PWCHAR DirectorySearchPattern
Definition: ntfs.h:159
ULONG Entry
Definition: ntfs.h:157
LARGE_INTEGER CurrentByteOffset
Definition: ntfs.h:155
ULONG LastOffset
Definition: ntfs.h:161
NPAGED_LOOKASIDE_LIST FcbLookasideList
Definition: ntfs.h:180
FAST_IO_DISPATCH FastIoDispatch
Definition: ntfs.h:178
BOOLEAN EnableWriteSupport
Definition: ntfs.h:182
ULONG Flags
Definition: ntfs.h:177
NPAGED_LOOKASIDE_LIST AttrCtxtLookasideList
Definition: ntfs.h:181
ERESOURCE Resource
Definition: ntfs.h:173
PDEVICE_OBJECT DeviceObject
Definition: ntfs.h:175
NPAGED_LOOKASIDE_LIST IrpContextLookasideList
Definition: ntfs.h:179
NTFSIDENTIFIER Identifier
Definition: ntfs.h:172
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks
Definition: ntfs.h:176
PDRIVER_OBJECT DriverObject
Definition: ntfs.h:174
NTFSIDENTIFIER Identifier
Definition: ntfs.h:555
NTSTATUS SavedExceptionCode
Definition: ntfs.h:565
PFILE_OBJECT FileObject
Definition: ntfs.h:564
UCHAR MajorFunction
Definition: ntfs.h:558
ULONG Flags
Definition: ntfs.h:556
PIO_STACK_LOCATION Stack
Definition: ntfs.h:557
WORK_QUEUE_ITEM WorkQueueItem
Definition: ntfs.h:560
UCHAR MinorFunction
Definition: ntfs.h:559
CCHAR PriorityBoost
Definition: ntfs.h:566
BOOLEAN IsTopLevel
Definition: ntfs.h:562
PDEVICE_OBJECT DeviceObject
Definition: ntfs.h:563
USHORT UsaCount
Definition: ntfs.h:272
USHORT UsaOffset
Definition: ntfs.h:271
ULONGLONG Lsn
Definition: ntfs.h:273
ULONGLONG LastAccessTime
Definition: ntfs.h:364
ULONGLONG ChangeTime
Definition: ntfs.h:363
ULONGLONG LastWriteTime
Definition: ntfs.h:362
ULONG FileAttribute
Definition: ntfs.h:365
ULONGLONG CreationTime
Definition: ntfs.h:361
UCHAR MinorVersion
Definition: ntfs.h:493
UCHAR MajorVersion
Definition: ntfs.h:492
ULONG Unknown2
Definition: ntfs.h:495
ULONGLONG Unknown1
Definition: ntfs.h:491
USHORT Flags
Definition: ntfs.h:494
UCHAR SectorsPerCluster
Definition: ntfs.h:29
UCHAR Unused3[4]
Definition: ntfs.h:36
USHORT BytesPerSector
Definition: ntfs.h:28
UCHAR Unused1[2]
Definition: ntfs.h:32
USHORT SectorsPerTrack
Definition: ntfs.h:33
UCHAR Unused0[7]
Definition: ntfs.h:30
UCHAR Unused2[4]
Definition: ntfs.h:35
USHORT EndSector
Definition: ntfs.h:60
BIOS_PARAMETERS_BLOCK BPB
Definition: ntfs.h:57
UCHAR Jump[3]
Definition: ntfs.h:55
UCHAR BootStrap[426]
Definition: ntfs.h:59
EXTENDED_BIOS_PARAMETERS_BLOCK EBPB
Definition: ntfs.h:58
UCHAR OEMID[8]
Definition: ntfs.h:56
ULONGLONG VCN
Definition: ntfs.h:480
BOOLEAN HasValidVCN
Definition: ntfs.h:478
BOOLEAN DiskNeedsUpdating
Definition: ntfs.h:479
PB_TREE_KEY FirstKey
Definition: ntfs.h:481
struct _B_TREE_KEY * NextKey
Definition: ntfs.h:467
B_TREE_FILENAME_NODE * LesserChild
Definition: ntfs.h:468
PINDEX_ENTRY_ATTRIBUTE IndexEntry
Definition: ntfs.h:469
Definition: cdstruc.h:902
struct _FCB * ParentFcb
Definition: cdstruc.h:940
ULONG Flags
Definition: ntfs.h:613
FSRTL_COMMON_FCB_HEADER RFCB
Definition: ntfs.h:594
LIST_ENTRY FcbListEntry
Definition: ntfs.h:607
LONG RefCount
Definition: ntfs.h:612
PNTFS_VCB Vcb
Definition: ntfs.h:598
SHARE_ACCESS ShareAccess
Definition: cdstruc.h:1009
ULONGLONG MFTIndex
Definition: ntfs.h:617
WCHAR Stream[MAX_PATH]
Definition: ntfs.h:600
ERESOURCE PagingIoResource
Definition: ntfs.h:604
NTFSIDENTIFIER Identifier
Definition: ntfs.h:592
ULONG DirIndex
Definition: ntfs.h:610
SECTION_OBJECT_POINTERS SectionObjectPointers
Definition: ntfs.h:595
WCHAR * ObjectName
Definition: ntfs.h:601
WCHAR PathName[MAX_PATH]
Definition: ntfs.h:602
USHORT LinkCount
Definition: ntfs.h:618
ULONG OpenHandleCount
Definition: ntfs.h:614
FILENAME_ATTRIBUTE Entry
Definition: ntfs.h:620
ERESOURCE MainResource
Definition: ntfs.h:605
PFILE_OBJECT FileObject
Definition: ntfs.h:597
USHORT SequenceNumber
Definition: ntfs.h:284
USHORT Flags
Definition: ntfs.h:287
NTFS_RECORD_HEADER Ntfs
Definition: ntfs.h:283
USHORT LinkCount
Definition: ntfs.h:285
USHORT NextAttributeNumber
Definition: ntfs.h:291
USHORT Padding
Definition: ntfs.h:292
ULONG MFTRecordNumber
Definition: ntfs.h:293
USHORT AttributeOffset
Definition: ntfs.h:286
ULONG BytesInUse
Definition: ntfs.h:288
ULONGLONG BaseFileRecord
Definition: ntfs.h:290
ULONG BytesAllocated
Definition: ntfs.h:289
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentStart
Definition: ntfs.h:631
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentEnd
Definition: ntfs.h:632
PNTFS_ATTR_RECORD FirstAttr
Definition: ntfs.h:628
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentCur
Definition: ntfs.h:633
PDEVICE_EXTENSION Vcb
Definition: ntfs.h:626
PNTFS_ATTR_RECORD LastAttr
Definition: ntfs.h:630
ULONG Offset
Definition: ntfs.h:634
PNTFS_ATTR_RECORD CurrAttr
Definition: ntfs.h:629
BOOLEAN OnlyResident
Definition: ntfs.h:627
Definition: typedefs.h:120
ULONGLONG CacheRunOffset
Definition: ntfs.h:572
LARGE_MCB DataRunsMCB
Definition: ntfs.h:577
ULONGLONG CacheRunLength
Definition: ntfs.h:574
LONGLONG CacheRunLastLCN
Definition: ntfs.h:575
PUCHAR CacheRun
Definition: ntfs.h:571
ULONGLONG FileMFTIndex
Definition: ntfs.h:578
PNTFS_ATTR_RECORD pRecord
Definition: ntfs.h:580
LONGLONG CacheRunStartLCN
Definition: ntfs.h:573
ULONGLONG FileOwnerMFTIndex
Definition: ntfs.h:579
ULONGLONG CacheRunCurrentOffset
Definition: ntfs.h:576
ULONGLONG ChangeTime
Definition: ntfs.h:1323
ULONGLONG LastWriteTime
Definition: ntfs.h:1322
ULONGLONG AllocatedSize
Definition: ntfs.h:1318
ULONG FileAttributes
Definition: ntfs.h:1327
ULONGLONG DataSize
Definition: ntfs.h:1317
ULONGLONG CreationTime
Definition: ntfs.h:1321
ULONGLONG LastAccessTime
Definition: ntfs.h:1324
ULARGE_INTEGER MftStart
Definition: ntfs.h:73
ULONG BytesPerCluster
Definition: ntfs.h:70
USHORT VolumeLabelLength
Definition: ntfs.h:79
ULONG BytesPerFileRecord
Definition: ntfs.h:75
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH]
Definition: ntfs.h:80
ULONG BytesPerIndexRecord
Definition: ntfs.h:76
USHORT Flags
Definition: ntfs.h:83
ULONGLONG ClusterCount
Definition: ntfs.h:72
ULONG BytesPerSector
Definition: ntfs.h:68
ULARGE_INTEGER MftMirrStart
Definition: ntfs.h:74
UCHAR MinorVersion
Definition: ntfs.h:82
ULONGLONG SerialNumber
Definition: ntfs.h:78
ULONG MftZoneReservation
Definition: ntfs.h:85
ULONG SectorsPerCluster
Definition: ntfs.h:69
UCHAR MajorVersion
Definition: ntfs.h:81
ULONGLONG SectorCount
Definition: ntfs.h:71
volatile LONG BytesTransferred
Definition: ntfs.h:541
volatile LONG IrpCount
Definition: ntfs.h:539
volatile LONG Status
Definition: ntfs.h:540
KEVENT SyncEvent
Definition: ntfs.h:550
PVOID MasterVa
Definition: ntfs.h:547
BOOLEAN OwnsMasterMdl
Definition: ntfs.h:548
PMDL MasterMdl
Definition: ntfs.h:546
PNTFS_IO_RUN Runs
Definition: ntfs.h:528
NTFS_IO_RUN StackRuns[NTFS_MAX_IO_RUNS_ON_STACK]
Definition: ntfs.h:532
ULONG TotalLength
Definition: ntfs.h:531
ULONG Capacity
Definition: ntfs.h:530
ULONG Count
Definition: ntfs.h:529
PIRP SavedIrp
Definition: ntfs.h:522
LONGLONG Lbo
Definition: ntfs.h:519
ULONG BufferOffset
Definition: ntfs.h:520
ULONG ByteCount
Definition: ntfs.h:521
Definition: iotypes.h:189
Definition: fci.c:123
#define STATUS_PENDING
Definition: telnetd.h:14
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char UCHAR
Definition: typedefs.h:53
unsigned char * PBOOLEAN
Definition: typedefs.h:53
int64_t LONGLONG
Definition: typedefs.h:68
#define NTAPI
Definition: typedefs.h:36
uint64_t ULONGLONG
Definition: typedefs.h:67
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char CCHAR
Definition: typedefs.h:51
char * PCHAR
Definition: typedefs.h:51
Definition: dlist.c:348
#define MAXIMUM_VOLUME_LABEL_LENGTH
Definition: volutil.h:12
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1703
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:863
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
Definition: wdfiotarget.h:953
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
Definition: wdfregistry.h:275
#define FORCEINLINE
Definition: wdftypes.h:67
_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
Definition: wdfusb.h:1342
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
Definition: wdfwmi.h:481
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_IRQL_requires_same_ typedef _In_ ULONG ControlCode
Definition: wmitypes.h:55
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG SectorSize
Definition: halfuncs.h:291
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
Definition: iotypes.h:1099
* PFILE_OBJECT
Definition: iotypes.h:1998
enum _LOCK_OPERATION LOCK_OPERATION
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
Definition: ketypes.h:320
_In_opt_ PLARGE_INTEGER NewFileSize
Definition: mmfuncs.h:608