ReactOS 0.4.17-dev-1190-g4c812f4
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{
592 /* Must come first: FsRtl, Cc and Mm read FsContext as this header */
594
596
598
601
603 WCHAR *ObjectName; /* point on filename (250 chars max) in PathName */
604 WCHAR PathName[MAX_PATH]; /* path+filename 260 max */
605
608
609 /* Byte range locks taken through LockFileEx() */
611
613 struct _FCB* ParentFcb;
614
616
621
624
626
628
629typedef struct _FIND_ATTR_CONTXT
630{
641
642typedef struct
643{
645 USHORT Array[];
647
649
653{
654 PULONG Flags = &IrpContext->Flags;
655
656 *Flags &= ~IRPCONTEXT_COMPLETE;
658
659 return STATUS_PENDING;
660}
661
662/* attrib.c */
663
664//VOID
665//NtfsDumpAttribute(PATTRIBUTE Attribute);
666
669 PFILE_RECORD_HEADER FileRecord,
670 PNTFS_ATTR_RECORD AttributeAddress,
671 PCWSTR Name,
672 USHORT NameLength);
673
676 PNTFS_ATTR_RECORD AttributeAddress);
677
680 PNTFS_ATTR_CONTEXT AttrContext,
681 ULONG AttrOffset,
682 PFILE_RECORD_HEADER FileRecord,
683 ULONGLONG NextAssignedCluster,
684 ULONG RunLength);
685
688 PFILE_RECORD_HEADER FileRecord,
689 PNTFS_ATTR_RECORD AttributeAddress,
690 PCWSTR Name,
691 USHORT NameLength);
692
695 PFILE_RECORD_HEADER FileRecord,
696 PNTFS_ATTR_RECORD AttributeAddress,
697 PINDEX_ROOT_ATTRIBUTE NewIndexRoot,
698 ULONG RootLength,
699 PCWSTR Name,
700 USHORT NameLength);
701
704 PNTFS_ATTR_RECORD AttributeAddress,
705 PDEVICE_EXTENSION DeviceExt,
707 BOOLEAN CaseSensitive,
708 PULONGLONG ParentMftIndex);
709
712 PNTFS_ATTR_RECORD AttributeAddress);
713
716 PLARGE_MCB DataRunsMCB,
717 PULONGLONG pNextVBN);
718
721 ULONGLONG VcnCount,
722 PUCHAR RunBuffer,
723 ULONG MaxBufferSize,
724 PULONG UsedBufferSize);
725
726PUCHAR
727DecodeRun(PUCHAR DataRun,
728 LONGLONG *DataRunOffset,
729 ULONGLONG *DataRunLength);
730
732
733VOID
734NtfsDumpDataRuns(PVOID StartOfRun,
735 ULONGLONG CurrentLCN);
736
737VOID
739 PFILE_RECORD_HEADER FileRecord);
740
743 PFILE_RECORD_HEADER FileRecord);
744
747 PFILE_RECORD_HEADER FileRecord,
749
750UCHAR
751GetPackedByteCount(LONGLONG NumberToPack,
752 BOOLEAN IsSigned);
753
756 PNTFS_ATTR_RECORD Attribute,
757 PULONGLONG LastCluster);
758
761 PFILE_RECORD_HEADER FileRecord);
762
766
770
774 PFILE_RECORD_HEADER FileRecord,
775 BOOLEAN OnlyResident,
776 PNTFS_ATTR_RECORD * Attribute);
777
780 PNTFS_ATTR_RECORD * Attribute);
781
782VOID
784
787 PNTFS_ATTR_CONTEXT AttrContext,
788 ULONG AttrOffset,
789 PFILE_RECORD_HEADER FileRecord,
790 ULONG ClustersToFree);
791
792/* blockdev.c */
793
794VOID
796
801
802VOID
804
810 IN PNTFS_IO_RUN_LIST RunList,
811 IN BOOLEAN Override,
813
818 IN PIRP Irp,
820 IN PNTFS_IO_RUN_LIST RunList,
821 IN BOOLEAN Override,
823
830 IN BOOLEAN Override);
831
837 IN const PUCHAR Buffer);
838
841
844 IN ULONG DiskSector,
848 IN BOOLEAN Override);
849
857 IN BOOLEAN Override);
858
859
860/* btree.c */
861
862LONG
864 PB_TREE_KEY Key2,
865 BOOLEAN CaseSensitive);
866
869 PFILE_RECORD_HEADER FileRecordWithIndex,
870 /*PCWSTR IndexName,*/
871 PNTFS_ATTR_CONTEXT IndexRootContext,
872 PINDEX_ROOT_ATTRIBUTE IndexRoot,
873 PB_TREE *NewTree);
874
878 ULONG MaxIndexSize,
879 PINDEX_ROOT_ATTRIBUTE *IndexRoot,
880 ULONG *Length);
881
884
887 PFILENAME_ATTRIBUTE FileNameAttribute);
888
889VOID
891
892VOID
894
895VOID
897
898VOID
900
901VOID
905 ULONG Depth);
906
907VOID
911 ULONG Depth);
912
914CreateEmptyBTree(PB_TREE *NewTree);
915
918 ULONG IndexBufferSize,
919 ULONGLONG Vcn);
920
923
924ULONG
926
929 ULONGLONG FileReference,
930 PFILENAME_ATTRIBUTE FileNameAttribute,
932 BOOLEAN CaseSensitive,
933 ULONG MaxIndexRootSize,
934 ULONG IndexRecordSize,
935 PB_TREE_KEY *MedianKey,
936 PB_TREE_FILENAME_NODE *NewRightHandSibling);
937
940 PB_TREE_KEY SearchKey,
941 BOOLEAN CaseSensitive);
942
946 PB_TREE_KEY *MedianKey,
947 PB_TREE_FILENAME_NODE *NewRightHandSibling,
948 BOOLEAN CaseSensitive);
949
953 ULONG IndexBufferSize,
954 PFILE_RECORD_HEADER FileRecord);
955
958 PFILE_RECORD_HEADER FileRecord,
960 ULONG IndexBufferSize,
961 PNTFS_ATTR_CONTEXT IndexAllocationContext,
962 ULONG IndexAllocationOffset);
963
964/* close.c */
965
968
969
970/* close.c */
971
975
977NtfsClose(PNTFS_IRP_CONTEXT IrpContext);
978
979
980/* create.c */
981
983NtfsCreate(PNTFS_IRP_CONTEXT IrpContext);
984
988 BOOLEAN CaseSensitive,
989 BOOLEAN CanWait);
990
993
997 BOOLEAN CaseSensitive,
998 BOOLEAN CanWait);
999
1000/* devctl.c */
1001
1004
1005
1006/* dirctl.c */
1007
1010 PFILE_RECORD_HEADER FileRecord,
1011 PCWSTR Stream,
1012 ULONG StreamLength,
1013 PULONGLONG AllocatedSize);
1014
1017
1018
1019/* dispatch.c */
1020
1024 PIRP Irp);
1025
1026
1027/* fastio.c */
1028
1031 BOOLEAN Wait);
1032
1033VOID NTAPI
1035
1038 BOOLEAN Wait);
1039
1040VOID NTAPI
1042
1043FAST_IO_CHECK_IF_POSSIBLE NtfsFastIoCheckIfPossible;
1044FAST_IO_READ NtfsFastIoRead;
1045FAST_IO_WRITE NtfsFastIoWrite;
1046
1047
1048/* fcb.c */
1049
1052 PCWSTR Stream,
1053 PNTFS_VCB Vcb);
1054
1055VOID
1057
1058BOOLEAN
1060
1061BOOLEAN
1062NTAPI
1065
1066BOOLEAN
1068
1069BOOLEAN
1071
1072BOOLEAN
1074
1075BOOLEAN
1077
1078VOID
1080 PNTFS_FCB Fcb);
1081
1082VOID
1084 PNTFS_FCB Fcb);
1085
1086VOID
1088 PNTFS_FCB Fcb);
1089
1090VOID
1094
1098
1101 PNTFS_FCB Fcb);
1102
1105
1108
1111 PNTFS_FCB Fcb,
1113
1116 PNTFS_FCB *pParentFCB,
1117 PNTFS_FCB *pFCB,
1118 PCWSTR pFileName,
1119 BOOLEAN CaseSensitive);
1120
1123 PNTFS_FCB pFCB,
1124 ULONG Type,
1125 PCWSTR Name,
1126 ULONG NameLength,
1127 PVOID * Data);
1128
1131 PNTFS_FCB DirectoryFCB,
1133 PCWSTR Stream,
1135 ULONGLONG MFTIndex,
1136 PNTFS_FCB * fileFCB);
1137
1138
1139/* finfo.c */
1140
1143
1147 PDEVICE_EXTENSION DeviceExt,
1148 ULONG IrpFlags,
1149 BOOLEAN CaseSensitive,
1151
1154
1155/* fsctl.c */
1156
1159
1160/* flush.c */
1161
1164
1165/* lockctrl.c */
1166
1168NTAPI
1170 _In_ PNTFS_IRP_CONTEXT IrpContext);
1171
1172
1173/* mft.c */
1176 ULONGLONG DirectoryMftIndex,
1177 ULONGLONG FileReferenceNumber,
1178 PFILENAME_ATTRIBUTE FilenameAttribute,
1179 BOOLEAN CaseSensitive);
1180
1183 ULONGLONG DirectoryMftIndex,
1184 PFILENAME_ATTRIBUTE FilenameAttribute,
1185 BOOLEAN CaseSensitive);
1186
1189 ULONGLONG MftIndex);
1190
1193 ULONGLONG MftIndex,
1194 BOOLEAN CaseSensitive);
1195
1198 PDEVICE_EXTENSION DeviceExt,
1199 PULONGLONG DestinationIndex,
1200 BOOLEAN CanWait);
1201
1202VOID
1204
1207
1208VOID
1210
1211ULONG
1215 PCHAR Buffer,
1216 ULONG Length);
1217
1218ULONG
1222 PCHAR Buffer,
1223 ULONG Length,
1224 PIRP Irp);
1225
1230 const PUCHAR Buffer,
1231 ULONG Length,
1232 PULONG LengthWritten,
1233 PFILE_RECORD_HEADER FileRecord);
1234
1239 const PUCHAR Buffer,
1240 ULONG Length,
1241 PULONG LengthWritten,
1242 PFILE_RECORD_HEADER FileRecord,
1243 PIRP Irp);
1244
1247
1250 PNTFS_ATTR_CONTEXT AttrContext,
1251 PFILE_RECORD_HEADER FileRecord,
1252 ULONG AttrOffset,
1253 ULONG DataSize);
1254
1257 PNTFS_ATTR_RECORD FirstAttributeToMove,
1258 ULONG FirstAttributeOffset,
1259 ULONG_PTR MoveTo);
1260
1263 PNTFS_FCB Fcb,
1264 PNTFS_ATTR_CONTEXT AttrContext,
1265 ULONG AttrOffset,
1266 PFILE_RECORD_HEADER FileRecord,
1268
1269VOID
1271 PNTFS_ATTR_RECORD AttrEnd,
1272 ULONG EndMarker);
1273
1276 PNTFS_ATTR_CONTEXT AttrContext,
1277 ULONG AttrOffset,
1278 PFILE_RECORD_HEADER FileRecord,
1280
1284 _In_ PNTFS_ATTR_CONTEXT AttrContext,
1285 _In_ ULONG AttrOffset,
1286 _In_ PFILE_RECORD_HEADER FileRecord,
1288
1292
1297 _In_ BOOLEAN CaseSensitive,
1299
1302 PNTFS_ATTR_CONTEXT AttrContext,
1303 ULONG AttrOffset,
1304 PFILE_RECORD_HEADER FileRecord,
1306
1309
1310BOOLEAN
1313 PINDEX_ENTRY_ATTRIBUTE IndexEntry,
1314 BOOLEAN DirSearch,
1315 BOOLEAN CaseSensitive);
1316
1319
1322
1327
1328/* NTFS duplicates a file's sizes, timestamps and attributes into the $FILE_NAME
1329 * of its entry in the parent directory's index, so a directory can be
1330 * enumerated without reading every file record. These flags say which of them
1331 * the caller changed and so need refreshing there. */
1332#define NTFS_FILENAME_UPDATE_SIZES 0x1
1333#define NTFS_FILENAME_UPDATE_TIMES 0x2
1334#define NTFS_FILENAME_UPDATE_ATTRS 0x4
1335
1337{
1339
1340 /* NTFS_FILENAME_UPDATE_SIZES */
1343
1344 /* NTFS_FILENAME_UPDATE_TIMES */
1349
1350 /* NTFS_FILENAME_UPDATE_ATTRS */
1353
1356 PFILE_RECORD_HEADER MftRecord,
1357 PCHAR IndexRecord,
1358 ULONG IndexBlockSize,
1359 PINDEX_ENTRY_ATTRIBUTE FirstEntry,
1360 PINDEX_ENTRY_ATTRIBUTE LastEntry,
1362 PULONG StartEntry,
1363 PULONG CurrentEntry,
1364 BOOLEAN DirSearch,
1366 BOOLEAN CaseSensitive);
1367
1370 PFILE_RECORD_HEADER FileRecord,
1371 ULONGLONG MFTIndex,
1372 ULONG Flags,
1373 BOOLEAN CaseSensitive);
1374
1377 ULONGLONG ParentMFTIndex,
1379 BOOLEAN DirSearch,
1381 BOOLEAN CaseSensitive);
1382
1385 ULONGLONG MftIndex,
1386 PFILE_RECORD_HEADER FileRecord);
1387
1390 PFILE_RECORD_HEADER MftRecord,
1391 ULONG Type,
1392 PCWSTR Name,
1393 ULONG NameLength,
1394 PNTFS_ATTR_CONTEXT * AttrCtx,
1395 PULONG Offset);
1396
1397VOID
1401 ULONGLONG vcn,
1402 ULONG count,
1403 PVOID buffer);
1404
1408
1412
1415 ULONGLONG lcn,
1416 ULONG count,
1417 PVOID buffer);
1418
1419VOID
1423
1426 PUNICODE_STRING PathName,
1427 BOOLEAN CaseSensitive,
1428 PFILE_RECORD_HEADER *FileRecord,
1429 PULONGLONG MFTIndex);
1430
1433 PUNICODE_STRING PathName,
1434 BOOLEAN CaseSensitive,
1435 PFILE_RECORD_HEADER *FileRecord,
1436 PULONGLONG MFTIndex,
1437 ULONGLONG CurrentMFTIndex);
1438
1439VOID
1441 PFILE_RECORD_HEADER FileRecord);
1442
1445 PUNICODE_STRING SearchPattern,
1446 PULONG FirstEntry,
1447 PFILE_RECORD_HEADER *FileRecord,
1448 PULONGLONG MFTIndex,
1449 ULONGLONG CurrentMFTIndex,
1450 BOOLEAN CaseSensitive);
1451
1455 _In_ ULONGLONG MftIndex,
1457
1460 ULONGLONG MFTIndex,
1462 PULONG FirstEntry,
1463 BOOLEAN DirSearch,
1464 BOOLEAN CaseSensitive,
1465 ULONGLONG *OutMFTIndex);
1466
1467/* misc.c */
1468
1469BOOLEAN
1471
1474 PIRP Irp);
1475
1476PVOID
1478 BOOLEAN Paging);
1479
1482 IN ULONG Length,
1484
1485#if 0
1486BOOLEAN
1487wstrcmpjoki(PWSTR s1, PWSTR s2);
1488
1489VOID
1490CdfsSwapString(PWCHAR Out,
1491 PUCHAR In,
1492 ULONG Count);
1493#endif
1494
1495VOID
1496NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
1498
1499
1500/* rw.c */
1501
1503NtfsRead(PNTFS_IRP_CONTEXT IrpContext);
1504
1506NtfsWrite(PNTFS_IRP_CONTEXT IrpContext);
1507
1508
1509/* volinfo.c */
1510
1513 ULONG FirstDesiredCluster,
1514 ULONG DesiredClusters,
1515 PULONG FirstAssignedCluster,
1516 PULONG AssignedClusters);
1517
1520
1523 _In_ PDEVICE_EXTENSION DeviceExt);
1524
1525VOID
1527 _In_ PDEVICE_EXTENSION DeviceExt);
1528
1531 _In_ PDEVICE_EXTENSION DeviceExt,
1532 _In_ ULONG FirstCluster,
1533 _In_ ULONG ClusterCount);
1534
1537
1540
1541
1542/* ntfs.c */
1543
1544CODE_SEG("INIT")
1545DRIVER_INITIALIZE DriverEntry;
1546
1547CODE_SEG("INIT")
1548VOID
1549NTAPI
1551
1552#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
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:1043
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:652
VOID NtfsDumpData(ULONG_PTR Buffer, ULONG Length)
Definition: mft.c:4305
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)
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:1590
struct _NTFS_IO_RUN NTFS_IO_RUN
BOOLEAN NtfsFCBIsDirectory(PNTFS_FCB Fcb)
Definition: fcb.c:144
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:1936
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:806
PNTFS_FCB NtfsGrabFCBFromTable(PNTFS_VCB Vcb, PCWSTR FileName)
Definition: fcb.c:291
VOID DestroyBTreeNode(PB_TREE_FILENAME_NODE Node)
Definition: btree.c:1518
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:185
NTSTATUS NtfsFCBInitializeCache(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:334
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:4236
NTSTATUS UpdateFileRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MftIndex, PFILE_RECORD_HEADER FileRecord)
Definition: mft.c:2391
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:1995
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:4295
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:2067
ULONG GetFileNameAttributeLength(PFILENAME_ATTRIBUTE FileNameAttribute)
Definition: attrib.c:2008
NTSTATUS NtfsIsDirectoryEmpty(_In_ PDEVICE_EXTENSION Vcb, _In_ ULONGLONG MftIndex, _Out_ PBOOLEAN Empty)
Definition: mft.c:4554
VOID NtfsFileFlagsToAttributes(ULONG NtfsAttributes, PULONG FileAttributes)
Definition: misc.c:105
DRIVER_DISPATCH NtfsFsdDispatch
Definition: ntfs.h:1021
NTSTATUS NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
Definition: close.c:40
FAST_IO_READ NtfsFastIoRead
Definition: ntfs.h:1044
struct NTFS_CCB * PNTFS_CCB
NTSTATUS NTAPI NtfsLockControl(_In_ PNTFS_IRP_CONTEXT IrpContext)
Definition: lockctrl.c:19
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:2138
struct NTFS_IRP_CONTEXT * PNTFS_IRP_CONTEXT
VOID DestroyBTreeKey(PB_TREE_KEY Key)
Definition: btree.c:1506
NTSTATUS NtfsRemoveFilenameFromDirectory(PDEVICE_EXTENSION DeviceExt, ULONGLONG DirectoryMftIndex, PFILENAME_ATTRIBUTE FilenameAttribute, BOOLEAN CaseSensitive)
Definition: mft.c:3297
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:1545
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:1677
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:3470
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:3690
ULONGLONG GetIndexEntryVCN(PINDEX_ENTRY_ATTRIBUTE IndexEntry)
Definition: btree.c:1648
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:1698
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:166
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:2215
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:1625
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:1637
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:458
BOOLEAN NTAPI NtfsAcqLazyWrite(PVOID Context, BOOLEAN Wait)
VOID DestroyBTree(PB_TREE Tree)
Definition: btree.c:1549
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:3575
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:107
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:1065
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:396
VOID NtfsRemoveFCBFromTable(_In_ PNTFS_VCB Vcb, _In_ PNTFS_FCB Fcb)
Definition: fcb.c:270
NTSTATUS UpdateFileNameRecord(PDEVICE_EXTENSION Vcb, ULONGLONG ParentMFTIndex, PUNICODE_STRING FileName, BOOLEAN DirSearch, PNTFS_FILENAME_UPDATE Update, BOOLEAN CaseSensitive)
Definition: mft.c:2191
VOID DumpBTree(PB_TREE Tree)
Definition: btree.c:1629
NTSTATUS NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext)
Definition: fsctl.c:1045
NTSTATUS NtfsWrite(PNTFS_IRP_CONTEXT IrpContext)
Definition: rw.c:965
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:3049
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
NTSTATUS NtfsResizeAllocation(_In_ PNTFS_FCB Fcb, _In_ PFILE_OBJECT FileObject, _In_ BOOLEAN CaseSensitive, _In_ ULONGLONG AllocationSize)
Definition: mft.c:924
struct _FCB NTFS_FCB
#define NTFS_MAX_IO_RUNS_ON_STACK
Definition: ntfs.h:513
VOID NTAPI NtfsRelLazyWrite(PVOID Context)
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:2482
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:179
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:4342
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
BOOLEAN NTAPI NtfsIsRegularFileObject(_In_ PFILE_OBJECT FileObject)
Definition: fcb.c:153
struct _B_TREE_KEY B_TREE_KEY
NTSTATUS NtfsAttachFCBToFileObject(PNTFS_VCB Vcb, PNTFS_FCB Fcb, PFILE_OBJECT FileObject)
Definition: fcb.c:533
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:3622
ULONG ReadAttributeToIrp(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT Context, ULONGLONG Offset, PCHAR Buffer, ULONG Length, PIRP Irp)
Definition: mft.c:1556
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:3336
NTSTATUS SetResidentAttributeDataLength(PDEVICE_EXTENSION Vcb, PNTFS_ATTR_CONTEXT AttrContext, ULONG AttrOffset, PFILE_RECORD_HEADER FileRecord, PLARGE_INTEGER DataSize)
Definition: mft.c:1148
NTSTATUS NtfsFindMftRecord(PDEVICE_EXTENSION Vcb, ULONGLONG MFTIndex, PUNICODE_STRING FileName, PULONG FirstEntry, BOOLEAN DirSearch, BOOLEAN CaseSensitive, ULONGLONG *OutMFTIndex)
Definition: mft.c:4151
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:1829
NTSTATUS NtfsTrimAllocation(_In_ PNTFS_FCB Fcb)
Definition: mft.c:842
NTSTATUS ReadLCN(PDEVICE_EXTENSION Vcb, ULONGLONG lcn, ULONG count, PVOID buffer)
Definition: mft.c:3603
struct _FILE_RECORD_HEADER * PFILE_RECORD_HEADER
NTSTATUS NtfsLoadUpCaseTable(PDEVICE_EXTENSION Vcb)
Definition: mft.c:1930
BOOLEAN NtfsFCBIsCompressed(PNTFS_FCB Fcb)
Definition: fcb.c:173
VOID NTAPI NtfsRelReadAhead(PVOID Context)
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:2425
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:126
NTSTATUS NtfsGetFCBForFile(PNTFS_VCB Vcb, PNTFS_FCB *pParentFCB, PNTFS_FCB *pFCB, PCWSTR pFileName, BOOLEAN CaseSensitive)
Definition: fcb.c:674
PNTFS_FCB NtfsOpenRootFCB(PNTFS_VCB Vcb)
Definition: fcb.c:443
NTSTATUS NtfsFindFileAt(PDEVICE_EXTENSION Vcb, PUNICODE_STRING SearchPattern, PULONG FirstEntry, PFILE_RECORD_HEADER *FileRecord, PULONGLONG MFTIndex, ULONGLONG CurrentMFTIndex, BOOLEAN CaseSensitive)
Definition: mft.c:4363
NTSTATUS NtfsSetInformation(PNTFS_IRP_CONTEXT IrpContext)
Definition: finfo.c:1748
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:192
struct NTFSIDENTIFIER * PNTFSIDENTIFIER
struct ATTRIBUTE_LIST * PATTRIBUTE_LIST
VOID NtfsAddFCBToTable(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:250
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:1045
struct _FILE_RECORD_HEADER FILE_RECORD_HEADER
VOID NtfsReleaseFCB(PNTFS_VCB Vcb, PNTFS_FCB Fcb)
Definition: fcb.c:209
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:388
VOID DumpBTreeKey(PB_TREE Tree, PB_TREE_KEY Key, ULONG Number, ULONG Depth)
Definition: btree.c:1556
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
_In_ PIRP Irp
Definition: kse.h:79
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
Definition: kse.h:81
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
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:644
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:618
FSRTL_COMMON_FCB_HEADER RFCB
Definition: ntfs.h:593
LIST_ENTRY FcbListEntry
Definition: ntfs.h:612
LONG RefCount
Definition: ntfs.h:617
PNTFS_VCB Vcb
Definition: ntfs.h:600
SHARE_ACCESS ShareAccess
Definition: cdstruc.h:1009
ULONGLONG MFTIndex
Definition: ntfs.h:622
WCHAR Stream[MAX_PATH]
Definition: ntfs.h:602
ERESOURCE PagingIoResource
Definition: ntfs.h:606
NTFSIDENTIFIER Identifier
Definition: ntfs.h:595
ULONG DirIndex
Definition: ntfs.h:615
SECTION_OBJECT_POINTERS SectionObjectPointers
Definition: ntfs.h:597
WCHAR * ObjectName
Definition: ntfs.h:603
FILE_LOCK FileLock
Definition: fatstruc.h:1071
WCHAR PathName[MAX_PATH]
Definition: ntfs.h:604
USHORT LinkCount
Definition: ntfs.h:623
ULONG OpenHandleCount
Definition: ntfs.h:619
FILENAME_ATTRIBUTE Entry
Definition: ntfs.h:625
ERESOURCE MainResource
Definition: ntfs.h:607
PFILE_OBJECT FileObject
Definition: ntfs.h:599
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:636
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentEnd
Definition: ntfs.h:637
PNTFS_ATTR_RECORD FirstAttr
Definition: ntfs.h:633
PNTFS_ATTRIBUTE_LIST_ITEM NonResidentCur
Definition: ntfs.h:638
PDEVICE_EXTENSION Vcb
Definition: ntfs.h:631
PNTFS_ATTR_RECORD LastAttr
Definition: ntfs.h:635
ULONG Offset
Definition: ntfs.h:639
PNTFS_ATTR_RECORD CurrAttr
Definition: ntfs.h:634
BOOLEAN OnlyResident
Definition: ntfs.h:632
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:1347
ULONGLONG LastWriteTime
Definition: ntfs.h:1346
ULONGLONG AllocatedSize
Definition: ntfs.h:1342
ULONG FileAttributes
Definition: ntfs.h:1351
ULONGLONG DataSize
Definition: ntfs.h:1341
ULONGLONG CreationTime
Definition: ntfs.h:1345
ULONGLONG LastAccessTime
Definition: ntfs.h:1348
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