#include "libvolume_id.h"
#include "util.h"
-struct ntfs_super_block {
+static struct ntfs_super_block {
uint8_t jump[3];
uint8_t oem_id[8];
uint16_t bytes_per_sector;
uint16_t checksum;
} PACKED *ns;
-struct master_file_table_record {
+static struct master_file_table_record {
uint8_t magic[4];
uint16_t usa_ofs;
uint16_t usa_count;
uint32_t bytes_allocated;
} PACKED *mftr;
-struct file_attribute {
+static struct file_attribute {
uint32_t type;
uint32_t len;
uint8_t non_resident;
uint16_t value_offset;
} PACKED *attr;
-struct volume_info {
+static struct volume_info {
uint64_t reserved;
uint8_t major_ver;
uint8_t minor_ver;
#define MFT_RECORD_ATTR_OBJECT_ID 0x40
#define MFT_RECORD_ATTR_END 0xffffffffu
-int volume_id_probe_ntfs(struct volume_id *id, uint64_t off)
+int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
{
unsigned int sector_size;
unsigned int cluster_size;
const uint8_t *buf;
const uint8_t *val;
- dbg("probing at offset 0x%llx", (unsigned long long) off);
+ info("probing at offset 0x%llx", (unsigned long long) off);
ns = (struct ntfs_super_block *) volume_id_get_buffer(id, off, 0x200);
if (ns == NULL)
if (memcmp(ns->oem_id, "NTFS", 4) != 0)
return -1;
- volume_id_set_uuid(id, ns->volume_serial, UUID_NTFS);
+ volume_id_set_uuid(id, ns->volume_serial, 0, UUID_64BIT_LE);
sector_size = le16_to_cpu(ns->bytes_per_sector);
cluster_size = ns->sectors_per_cluster * sector_size;