wxtla 0.3.1

Wired eXploring Target Layer Accessor
Documentation
//! Constants shared by the VHDX parser.

use super::guid::VhdxGuid;

pub(super) const FILE_IDENTIFIER_SIZE: usize = 64 * 1024;
pub(super) const IMAGE_HEADER_SIZE: usize = 4 * 1024;
pub(super) const REGION_TABLE_SIZE: usize = 64 * 1024;
pub(super) const METADATA_TABLE_SIZE: usize = 64 * 1024;

pub(super) const FILE_IDENTIFIER_OFFSET: u64 = 0;
pub(super) const PRIMARY_IMAGE_HEADER_OFFSET: u64 = 64 * 1024;
pub(super) const SECONDARY_IMAGE_HEADER_OFFSET: u64 = 2 * 64 * 1024;
pub(super) const PRIMARY_REGION_TABLE_OFFSET: u64 = 3 * 64 * 1024;
pub(super) const SECONDARY_REGION_TABLE_OFFSET: u64 = 4 * 64 * 1024;

pub(super) const FILE_IDENTIFIER_SIGNATURE: &[u8; 8] = b"vhdxfile";
pub(super) const IMAGE_HEADER_SIGNATURE: &[u8; 4] = b"head";
pub(super) const REGION_TABLE_SIGNATURE: &[u8; 4] = b"regi";
pub(super) const METADATA_TABLE_SIGNATURE: &[u8; 8] = b"metadata";

pub(super) const VHDX_ALIGNMENT: u64 = 1024 * 1024;
pub(super) const VHDX_MIN_BLOCK_SIZE: u32 = 1024 * 1024;
pub(super) const VHDX_MAX_BLOCK_SIZE: u32 = 256 * 1024 * 1024;
pub(super) const VHDX_MAX_TABLE_ENTRIES: usize = 2047;
pub(super) const SECTOR_BITMAP_BLOCK_SIZE: u64 = 1024 * 1024;
pub(super) const SECTORS_PER_BITMAP_BLOCK: u64 = 1 << 23;

pub(super) const BAT_REGION_GUID: VhdxGuid = VhdxGuid::from_fields(
  0x2DC2_7766,
  0xF623,
  0x4200,
  [0x9D, 0x64, 0x11, 0x5E, 0x9B, 0xFD, 0x4A, 0x08],
);

pub(super) const METADATA_REGION_GUID: VhdxGuid = VhdxGuid::from_fields(
  0x8B7C_A206,
  0x4790,
  0x4B9A,
  [0xB8, 0xFE, 0x57, 0x5F, 0x05, 0x0F, 0x88, 0x6E],
);

pub(super) const FILE_PARAMETERS_GUID: VhdxGuid = VhdxGuid::from_fields(
  0xCAA1_6737,
  0xFA36,
  0x4D43,
  [0xB3, 0xB6, 0x33, 0xF0, 0xAA, 0x44, 0xE7, 0x6B],
);

pub(super) const VIRTUAL_DISK_SIZE_GUID: VhdxGuid = VhdxGuid::from_fields(
  0x2FA5_4224,
  0xCD1B,
  0x4876,
  [0xB2, 0x11, 0x5D, 0xBE, 0xD8, 0x3B, 0xF4, 0xB8],
);

pub(super) const LOGICAL_SECTOR_SIZE_GUID: VhdxGuid = VhdxGuid::from_fields(
  0x8141_BF1D,
  0xA96F,
  0x4709,
  [0xBA, 0x47, 0xF2, 0x33, 0xA8, 0xFA, 0xAB, 0x5F],
);

pub(super) const PHYSICAL_SECTOR_SIZE_GUID: VhdxGuid = VhdxGuid::from_fields(
  0xCDA3_48C7,
  0x445D,
  0x4471,
  [0x9C, 0xC9, 0xE9, 0x88, 0x52, 0x51, 0xC5, 0x56],
);

pub(super) const VIRTUAL_DISK_IDENTIFIER_GUID: VhdxGuid = VhdxGuid::from_fields(
  0xBECA_12AB,
  0xB2E6,
  0x4523,
  [0x93, 0xEF, 0xC3, 0x09, 0xE0, 0x00, 0xC7, 0x46],
);

pub(super) const PARENT_LOCATOR_GUID: VhdxGuid = VhdxGuid::from_fields(
  0xA8D3_5F2D,
  0xB30B,
  0x454D,
  [0xAB, 0xF7, 0xD3, 0xD8, 0x48, 0x34, 0xAB, 0x0C],
);

pub(super) const PARENT_LOCATOR_TYPE_GUID: VhdxGuid = VhdxGuid::from_fields(
  0xB04A_EFB7,
  0xD19E,
  0x4A81,
  [0xB7, 0x89, 0x25, 0xB8, 0xE9, 0x44, 0x59, 0x13],
);