SpiderScript - Commenting changes
[tpg/acess2.git] / Modules / Filesystems / NTFS / common.h
index ba25c18..598120d 100644 (file)
@@ -1,14 +1,76 @@
 /*
+ * Acess2 - NTFS Driver
+ * By John Hodge (thePowersGang)
+ * This file is published under the terms of the Acess licence. See the
+ * file COPYING for details.
+ *
+ * common.h - Common Types and Definitions
  */
 #ifndef _COMMON_H_
 #define _COMMON_H_
 
+#include <acess.h>
+#include <vfs.h>
+
+typedef Uint16 WCHAR;
+
 // === STRUCTURES ===
+/**
+ * In-memory representation of an NTFS Disk
+ */
 typedef struct sNTFS_Disk
 {
+        int    FD;
+        int    CacheHandle;
+        
+        int    ClusterSize;
+       Uint64  MFTBase;
+       Uint32  MFTRecSize;
        
+       tVFS_Node       RootNode;
 }      tNTFS_Disk;
 
+typedef struct sNTFS_BootSector
+{
+       // 0
+       Uint8   Jump[3];
+       Uint8   SystemID[8];    // = "NTFS    "
+       Uint16  BytesPerSector;
+       Uint8   SectorsPerCluster;
+       
+       // 0xE
+       Uint8   Unused[7];
+       Uint8   MediaDescriptor;
+       Uint16  Unused2;
+       Uint16  SectorsPerTrack;
+       Uint16  Heads;
+       
+       // 0x1C
+       Uint64  Unused3;
+       Uint32  Unkown; // Usually 0x00800080 (according to Linux docs)
+       
+       // 0x28
+       Uint64  TotalSectorCount;       // Size of volume in sectors
+       Uint64  MFTStart;       // Logical Cluster Number of Cluster 0 of MFT
+       Uint64  MFTMirrorStart; // Logical Cluster Number of Cluster 0 of MFT Backup
+       
+       // 0x40
+       // If either of these are -ve, the size can be obtained via
+       // SizeInBytes = 2^(-1 * Value)
+       Sint8   ClustersPerMFTRecord;
+       Uint8   Unused4[3];
+       Sint8   ClustersPerIndexRecord;
+       Uint8   Unused5[3];
+       
+       Uint64  SerialNumber;
+       
+       Uint8   Padding[512-0x50];
+       
+} PACKED       tNTFS_BootSector;
+
+/**
+ * FILE header, an entry in the MFT
+ */
 typedef struct sNTFS_FILE_Header
 {
        Uint32  Magic;  // 'FILE'
@@ -46,8 +108,11 @@ typedef struct sNTFS_FILE_Header
                }       All;
        } OSDep;        
        
-}      tNTFS_FILE_Header;
+} PACKED       tNTFS_FILE_Header;
 
+/**
+ * File Attribute, follows the FILE header
+ */
 typedef struct sNTFS_FILE_Attrib
 {
        Uint32  Type;   // See eNTFS_FILE_Attribs
@@ -83,6 +148,6 @@ typedef struct sNTFS_FILE_Attrib
                        // Data Runs
                }       NonResident;
        };
-}      tNTFS_FILE_Attrib;
+} PACKED       tNTFS_FILE_Attrib;
 
 #endif

UCC git Repository :: git.ucc.asn.au