mirror of
https://github.com/aaru-dps/libaaruformat.git
synced 2025-12-16 19:24:40 +00:00
164 lines
4.1 KiB
Plaintext
164 lines
4.1 KiB
Plaintext
=== Dump Hardware Block (`DMP*`)
|
|
|
|
This block defines the set of hardware components involved in capturing the media content.
|
|
It includes an array listing each device used during the dumping process, along with the specific extents each device recorded.
|
|
|
|
This structure allows implementations to trace data provenance and associate dumped regions with their corresponding hardware sources, ensuring accountability and reproducibility in the dumping workflow.
|
|
|
|
==== Structure Definition
|
|
|
|
[source,c]
|
|
/**Dump hardware block, contains a list of hardware used to dump the media on this image */
|
|
typedef struct DumpHardwareHeader
|
|
{
|
|
uint32_t identifier; ///< Block identifier, must be BlockType::DumpHardwareBlock.
|
|
uint16_t entries; ///< Number of DumpHardwareEntry records that follow.
|
|
uint32_t length; ///< Total payload bytes after this header (sum of entries, strings, and extents arrays).
|
|
uint64_t crc64; ///< CRC64-ECMA of the payload (byte-swapped for legacy v1 images, handled automatically).
|
|
} DumpHardwareHeader;
|
|
|
|
==== Field Descriptions
|
|
|
|
[cols="2,2,2,6",options="header"]
|
|
|===
|
|
|Type
|
|
|Size
|
|
|Name
|
|
|Description
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|identifier
|
|
|The dump hardware block identifier, always `DMP*`
|
|
|
|
|uint16_t
|
|
|2 bytes
|
|
|entries
|
|
|The number of entries following this header
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|length
|
|
|The length in bytes of the data following this header.
|
|
|
|
|uint64_t
|
|
|8 bytes
|
|
|crc64
|
|
|The CRC64-ECMA checksum of the data following this header
|
|
|===
|
|
|
|
==== Dump hardware entries
|
|
|
|
[source,c]
|
|
/**Dump hardware entry, contains length of strings that follow, in the same order as the length, this structure */
|
|
typedef struct DumpHardwareEntry
|
|
{
|
|
uint32_t manufacturerLength; ///< Length in bytes of manufacturer UTF-8 string.
|
|
uint32_t modelLength; ///< Length in bytes of model UTF-8 string.
|
|
uint32_t revisionLength; ///< Length in bytes of revision / hardware revision string.
|
|
uint32_t firmwareLength; ///< Length in bytes of firmware version string.
|
|
uint32_t serialLength; ///< Length in bytes of device serial number string.
|
|
uint32_t softwareNameLength; ///< Length in bytes of dumping software name string.
|
|
uint32_t softwareVersionLength; ///< Length in bytes of dumping software version string.
|
|
uint32_t softwareOperatingSystemLength; ///< Length in bytes of host operating system string.
|
|
uint32_t extents; ///< Number of DumpExtent records following the strings (0 = none).
|
|
} DumpHardwareEntry;
|
|
|
|
==== Field Descriptions
|
|
|
|
[cols="2,2,2,6",options="header"]
|
|
|===
|
|
|Type
|
|
|Size
|
|
|Name
|
|
|Description
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|manufacturerLength
|
|
|Length of UTF-8 manufacturer string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|modelLength
|
|
|Length of UTF-8 model string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|revisionLength
|
|
|Length of UTF-8 revision string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|firmwareLength
|
|
|Length of UTF-8 firmware version string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|serialLength
|
|
|Length of UTF-8 serial number string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|softwareNameLength
|
|
|Length of UTF-8 software name string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|softwareVersionLength
|
|
|Length of UTF-8 software version string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|softwareOperatingSystemLength
|
|
|Length of UTF-8 software operating system string.
|
|
|
|
|uint32_t
|
|
|4 bytes
|
|
|extents
|
|
|How many extents are after the strings.
|
|
|===
|
|
|
|
==== Extents
|
|
|
|
[source,c]
|
|
/**Dump hardware extent, contains the start and end of the extent in the media */
|
|
typedef struct DumpExtent
|
|
{
|
|
uint64_t start; ///< Starting LBA (inclusive).
|
|
uint64_t end; ///< Ending LBA (inclusive); >= start.
|
|
} DumpExtent;
|
|
|
|
==== Field Descriptions
|
|
|
|
[cols="2,2,2,6",options="header"]
|
|
|===
|
|
|Type
|
|
|Size
|
|
|Name
|
|
|Description
|
|
|
|
|uint64_t
|
|
|8 bytes
|
|
|start
|
|
|Starting LBA of the extent (inclusive).
|
|
|
|
|uint64_t
|
|
|8 bytes
|
|
|end
|
|
|Ending LBA of the extent (inclusive).
|
|
|===
|
|
|
|
Each dump hardware entry is followed by a sequence of string fields in the following fixed order:
|
|
|
|
. Manufacturer
|
|
. Model
|
|
. Revision
|
|
. Firmware Version
|
|
. Serial Number
|
|
. Software Name
|
|
. Software Version
|
|
. Software Operating System
|
|
|
|
Immediately after the final string (`Software Operating System`), the list of extents associated with that hardware entry begins.
|