VFS_ReadAt(disk->FD, 0, 512, &bs);
VFS_ReadAt(disk->FD, 0, 512, &bs);
Log_Debug("FS_NTFS", "ClustersPerMFTRecord = %i", bs.ClustersPerMFTRecord);
Log_Debug("FS_NTFS", "ClustersPerIndexRecord = %i", bs.ClustersPerIndexRecord);
Log_Debug("FS_NTFS", "SerialNumber = 0x%llx", bs.SerialNumber);
Log_Debug("FS_NTFS", "ClustersPerMFTRecord = %i", bs.ClustersPerMFTRecord);
Log_Debug("FS_NTFS", "ClustersPerIndexRecord = %i", bs.ClustersPerIndexRecord);
Log_Debug("FS_NTFS", "SerialNumber = 0x%llx", bs.SerialNumber);
Log_Debug("NTFS", "MFT Base = %i", disk->MFTBase);
Log_Debug("NTFS", "TotalSectorCount = 0x%x", bs.TotalSectorCount);
Log_Debug("NTFS", "MFT Base = %i", disk->MFTBase);
Log_Debug("NTFS", "TotalSectorCount = 0x%x", bs.TotalSectorCount);
disk->MFTDataAttr = NULL;
disk->MFTDataAttr = NTFS_GetAttrib(disk, 0, NTFS_FileAttrib_Data, "", 0);
disk->MFTDataAttr = NULL;
disk->MFTDataAttr = NTFS_GetAttrib(disk, 0, NTFS_FileAttrib_Data, "", 0);
disk->RootDir.I30Root = NTFS_GetAttrib(disk, 5, NTFS_FileAttrib_IndexRoot, "$I30", 0);
disk->RootDir.I30Allocation = NTFS_GetAttrib(disk, 5, NTFS_FileAttrib_IndexAllocation, "$I30", 0);
disk->RootDir.I30Root = NTFS_GetAttrib(disk, 5, NTFS_FileAttrib_IndexRoot, "$I30", 0);
disk->RootDir.I30Allocation = NTFS_GetAttrib(disk, 5, NTFS_FileAttrib_IndexAllocation, "$I30", 0);
{
// Read from allocation
char buf[disk->ClusterSize];
size_t len = NTFS_ReadAttribData(disk->RootDir.I30Allocation, 0, sizeof(buf), buf);
Debug_HexDump("RootDir allocation", buf, len);
}
{
// Read from allocation
char buf[disk->ClusterSize];
size_t len = NTFS_ReadAttribData(disk->RootDir.I30Allocation, 0, sizeof(buf), buf);
Debug_HexDump("RootDir allocation", buf, len);
}
size_t NTFS_ReadAttribData(tNTFS_Attrib *Attrib, Uint64 Offset, size_t Length, void *Buffer)
{
size_t NTFS_ReadAttribData(tNTFS_Attrib *Attrib, Uint64 Offset, size_t Length, void *Buffer)
{