diff options
Diffstat (limited to 'private/ntos/boot/bootcode/ntfs/i386/ntfs.inc')
-rw-r--r-- | private/ntos/boot/bootcode/ntfs/i386/ntfs.inc | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/private/ntos/boot/bootcode/ntfs/i386/ntfs.inc b/private/ntos/boot/bootcode/ntfs/i386/ntfs.inc new file mode 100644 index 000000000..1782f4fc9 --- /dev/null +++ b/private/ntos/boot/bootcode/ntfs/i386/ntfs.inc @@ -0,0 +1,214 @@ +; +; Copyright (c) 1991 Microsoft Corporation +; +; Module Name: +; +; ntfs.inc +; +; Abstract: +; +; This module contains declarations for the NTFS on-disk +; structures needed by the boot code. +; +; Author: +; +; Bill McJohn (billmc) 12-May-1992 +; +MASTER_FILE_TABLE_NUMBER EQU 0d +MASTER_FILE_TABLE2_NUMBER EQU 1d +LOG_FILE_NUMBER EQU 2d +VOLUME_DASD_NUMBER EQU 3d +ATTRIBUTE_DEF_TABLE_NUMBER EQU 4d +ROOT_FILE_NAME_INDEX_NUMBER EQU 5d +BIT_MAP_FILE_NUMBER EQU 6d +BOOT_FILE_NUMBER EQU 7d +BAD_CLUSTER_FILE_NUMBER EQU 8d +QUOTA_TABLE_NUMBER EQU 9d +UPCASE_TABLE_NUMBER EQU 10d + +$STANDARD_INFORMATION EQU 010h +$ATTRIBUTE_LIST EQU 020h +$FILE_NAME EQU 030h +$VOLUME_VERSION EQU 040h +$SECURITY_DESCRIPTOR EQU 050h +$VOLUME_NAME EQU 060h +$VOLUME_INFORMATION EQU 070h +$DATA EQU 080h +$INDEX_ROOT EQU 090h +$INDEX_ALLOCATION EQU 0A0h +$BITMAP EQU 0B0h +$SYMBOLIC_LINK EQU 0C0h +$EA_INFORMATION EQU 0D0h +$EA_DATA EQU 0E0h +$FIRST_USER_DEFINED_ATTRIBUTE EQU 0100h +$END EQU 0FFFFFFFFh + +SEQUENCE_NUMBER_STRIDE EQU 512d + + +LARGE_INTEGER struc + LowPart dd ?; + HighPart dd ?; +LARGE_INTEGER ends; + +MFT_SEGMENT_REFERENCE struc + REF_LowPart dd ?; + REF_HighPart dw ?; + REF_SeqNo dw ?; +MFT_SEGMENT_REFERENCE ends; + +MULTI_SECTOR_HEADER struc + MSH_Signature dd ?; + MSH_UpdateArrayOfs dw ?; + MSH_UpdateArraySize dw ?; +MULTI_SECTOR_HEADER ends; + +FILE_RECORD_SEGMENT struc + FRS_Header db (size MULTI_SECTOR_HEADER) dup (?); + FRS_Lsn db (size LARGE_INTEGER) dup (?); + FRS_SequenceNumber dw ?; + FRS_ReferenceCount dw ?; + FRS_FirstAttribute dw ?; + FRS_Flags dw ?; + FRS_FirstFreeByte dd ?; + FRS_BytesAvailable dd ?; + FRS_BaseFRS db (size MFT_SEGMENT_REFERENCE) dup (?); + FRS_NextInstance dw ?; +FILE_RECORD_SEGMENT ends; + +FILE_RECORD_SEGMENT_IN_USE EQU 0001h +FILE_FILE_NAME_INDEX_PRESENT EQU 0002h + +ATTRIBUTE_RECORD struc + ATTR_TypeCode dd ?; + ATTR_RecordLength dd ?; + ATTR_FormCode db ?; + ATTR_NameLength db ?; + ATTR_NameOffset dw ?; + ATTR_Flags dw ?; + ATTR_Instance dw ?; + ATTR_FormUnion db ?; +ATTRIBUTE_RECORD ends + +RESIDENT_ATTRIBUTE_FORM struc + RES_ValueLength dd ?; + RES_ValueOffset dw ?; + RES_ResidentFlags db ?; + RES_Reserved db ?; +RESIDENT_ATTRIBUTE_FORM ends + +NONRESIDENT_ATTRIBUTE_FORM struc + NONRES_LowestVcn db (size LARGE_INTEGER) dup (?); + NONRES_HighestVcn db (size LARGE_INTEGER) dup (?); + NONRES_MappingPairOffset dw ?; + NONRES_Reserved dw 3 dup (?); + NONRES_AllocatedLength db (size LARGE_INTEGER) dup (?); + NONRES_FileSize db (size LARGE_INTEGER) dup (?); + NONRES_ValidDataLength db (size LARGE_INTEGER) dup (?); +NONRESIDENT_ATTRIBUTE_FORM ends + +; Attribute Form Codes + +RESIDENT_FORM EQU 0 +NONRESIDENT_FORM EQU 1 + +; Attribute Record Flag Values + +ATTRIBUTE_FLAG_COMPRESSION_MASK EQU 00FFh + + +; Attribute list entry structure: +; +ATTRIBUTE_LIST_ENTRY struc + ATTRLIST_TypeCode dd ?; + ATTRLIST_Length dw ?; + ATTRLIST_NameLength db ?; + ATTRLIST_NameOffset db ?; + ATTRLIST_LowestVcn db (size LARGE_INTEGER) dup (?); + ATTRLIST_SegmentReference db (size MFT_SEGMENT_REFERENCE) dup (?); + ATTRLIST_Instance dw ?; + ATTRLIST_Name dw ?; +ATTRIBUTE_LIST_ENTRY ends + + +FAT_DIRENT_ATTR_READ_ONLY EQU 01h +FAT_DIRENT_ATTR_HIDDEN EQU 02h +FAT_DIRENT_ATTR_SYSTEM EQU 04h +FAT_DIRENT_ATTR_VOLUME_ID EQU 08h +FAT_DIRENT_ATTR_ARCHIVE EQU 20h +FAT_DIRENT_ATTR_DEVICE EQU 40h + +DUPLICATED_INFORMATION struc + DUPINFO_CreationTime db (size LARGE_INTEGER) dup (?); + DUPINFO_LastModificationTime db (size LARGE_INTEGER) dup (?); + DUPINFO_LastChangeTime db (size LARGE_INTEGER) dup (?); + DUPINFO_LastAccessTime db (size LARGE_INTEGER) dup (?); + DUPINFO_AllocatedLength db (size LARGE_INTEGER) dup (?); + DUPINFO_FileSize db (size LARGE_INTEGER) dup (?); + DUPINFO_FileAttributes dd ?; + DUPINFO_PackedEaSize dw ?; +DUPLICATED_INFORMATION ends + + +FILE_NAME struc + FN_ParentDirectory db (size MFT_SEGMENT_REFERENCE) dup (?); + FN_Info db (size DUPLICATED_INFORMATION) dup (?); + FN_Pad dw ?; + FN_FileNameLength db ?; Length in chars + FN_Flags db ?; + FN_FileName dw ?; First char of name. +FILE_NAME ends + +FILE_NAME_NTFS EQU 1 +FILE_NAME_DOS EQU 2 +FILE_NAME_LINK EQU 4 + + +INDEX_HEADER struc + + IH_FirstIndexEntry dd ?; + IH_FirstFreeByte dd ?; + IH_BytesAvailable dd ?; + IH_Flags db ?; INDEX_xxx flags + IH_Reserved db 3 dup (?); +INDEX_HEADER ends + +; INDEX_xxx flags + +INDEX_NODE EQU 1 + + +INDEX_ROOT struc + + IR_IndexedAttributeType dd ?; + IR_CollationRule dd ?; + IR_BytesPerBuffer dd ?; + IR_ClustersPerBuffer db ?; + IR_Reserved db 3 dup (?); + IR_IndexHeader db (size INDEX_HEADER) dup (?); +INDEX_ROOT ends; + +INDEX_ALLOCATION_BUFFER struc + + IB_Header db (size MULTI_SECTOR_HEADER) dup (?); + IB_Lsn db (size LARGE_INTEGER) dup (?); + IB_ThisVcn db (size LARGE_INTEGER) dup (?); + IB_IndexHeader db (size INDEX_HEADER) dup (?); +INDEX_ALLOCATION_BUFFER ends; + + +INDEX_ENTRY struc + + IE_FileReference db (size MFT_SEGMENT_REFERENCE) dup (?); + IE_Length dw ?; + IE_AttributeLength dw ?; + IE_Flags dw ?; + IE_Reserved dw ?; + IE_Value db ?; +INDEX_ENTRY ends; + + +; INDEX_ENTRY_xxx flags +; +INDEX_ENTRY_NODE EQU 1 +INDEX_ENTRY_END EQU 2 |