/*
+ * 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;
- Uint64 MFTOfs;
+ int CacheHandle;
+
+ int ClusterSize;
+ Uint64 MFTBase;
+ Uint32 MFTRecSize;
+
tVFS_Node RootNode;
} tNTFS_Disk;
Uint16 BytesPerSector;
Uint8 SectorsPerCluster;
- // 14
+ // 0xE
Uint8 Unused[7];
Uint8 MediaDescriptor;
Uint16 Unused2;
Uint16 SectorsPerTrack;
+ Uint16 Heads;
+ // 0x1C
Uint64 Unused3;
- Uint32 Unknown;
+ Uint32 Unkown; // Usually 0x00800080 (according to Linux docs)
- // 38
+ // 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
- // 60
+ // 0x40
// If either of these are -ve, the size can be obtained via
// SizeInBytes = 2^(-1 * Value)
- Uint32 ClustersPerMFTRecord;
- Uint32 ClustersPerIndexRecord;
+ Sint8 ClustersPerMFTRecord;
+ Uint8 Unused4[3];
+ Sint8 ClustersPerIndexRecord;
+ Uint8 Unused5[3];
Uint64 SerialNumber;
- Uint8 Padding[515-offsetof(tNTFS_BootSector, Padding)];
+ Uint8 Padding[512-0x50];
-} tNTFS_BootSector;
+} PACKED tNTFS_BootSector;
/**
* FILE header, an entry in the MFT
} All;
} OSDep;
-} tNTFS_FILE_Header;
+} PACKED tNTFS_FILE_Header;
/**
* File Attribute, follows the FILE header
// Data Runs
} NonResident;
};
-} tNTFS_FILE_Attrib;
+} PACKED tNTFS_FILE_Attrib;
#endif