mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-26 16:47:40 +01:00
131 lines
3.7 KiB
C
131 lines
3.7 KiB
C
|
/** @file
|
||
|
Copyright (C) 2019, Goldfish64. All rights reserved.
|
||
|
|
||
|
This program and the accompanying materials
|
||
|
are licensed and made available under the terms and conditions of the BSD License
|
||
|
which accompanies this distribution. The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
**/
|
||
|
|
||
|
#ifndef APPLE_DISK_IMAGE_H
|
||
|
#define APPLE_DISK_IMAGE_H
|
||
|
|
||
|
//
|
||
|
// Magic number used to identify the disk image trailer.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_MAGIC 0x6B6F6C79
|
||
|
|
||
|
//
|
||
|
// Supported disk image version.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_VERSION 4
|
||
|
|
||
|
//
|
||
|
// Checksum length.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_CHECKSUM_SIZE 32
|
||
|
|
||
|
//
|
||
|
// Magic number used to identify the disk image block data.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_BLOCK_DATA_MAGIC 0x6D697368
|
||
|
|
||
|
//
|
||
|
// Sector size.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_SECTOR_SIZE 512
|
||
|
|
||
|
//
|
||
|
// Disk image checksum type.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_CHECKSUM_TYPE_CRC32 0x00000002
|
||
|
|
||
|
//
|
||
|
// Disk image chunk type.
|
||
|
//
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_ZERO 0x00000000
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_RAW 0x00000001
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_IGNORE 0x00000002
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_ADC 0x80000004
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_ZLIB 0x80000005
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_BZ2 0x80000006
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_COMMENT 0x7FFFFFFE
|
||
|
#define APPLE_DISK_IMAGE_CHUNK_TYPE_LAST 0xFFFFFFFF
|
||
|
|
||
|
#pragma pack(push, 1)
|
||
|
|
||
|
//
|
||
|
// Disk image checksum.
|
||
|
//
|
||
|
typedef struct APPLE_DISK_IMAGE_CHECKSUM_ {
|
||
|
UINT32 Type;
|
||
|
UINT32 Size;
|
||
|
UINT32 Data[APPLE_DISK_IMAGE_CHECKSUM_SIZE];
|
||
|
} APPLE_DISK_IMAGE_CHECKSUM;
|
||
|
|
||
|
//
|
||
|
// Disk image chunk (in XML).
|
||
|
//
|
||
|
typedef struct APPLE_DISK_IMAGE_CHUNK_ {
|
||
|
UINT32 Type;
|
||
|
UINT32 Comment;
|
||
|
UINT64 SectorNumber;
|
||
|
UINT64 SectorCount;
|
||
|
UINT64 CompressedOffset;
|
||
|
UINT64 CompressedLength;
|
||
|
} APPLE_DISK_IMAGE_CHUNK;
|
||
|
|
||
|
//
|
||
|
// Disk image block data (in XML).
|
||
|
//
|
||
|
typedef struct APPLE_DISK_IMAGE_BLOCK_DATA_ {
|
||
|
UINT32 Signature;
|
||
|
UINT32 Version;
|
||
|
UINT64 SectorNumber;
|
||
|
UINT64 SectorCount;
|
||
|
|
||
|
UINT64 DataOffset;
|
||
|
UINT32 BuffersNeeded;
|
||
|
UINT32 BlockDescriptors;
|
||
|
UINT32 Reserved[6];
|
||
|
APPLE_DISK_IMAGE_CHECKSUM Checksum;
|
||
|
|
||
|
UINT32 ChunkCount;
|
||
|
APPLE_DISK_IMAGE_CHUNK Chunks[];
|
||
|
} APPLE_DISK_IMAGE_BLOCK_DATA;
|
||
|
|
||
|
//
|
||
|
// Disk image trailer.
|
||
|
//
|
||
|
typedef struct APPLE_DISK_IMAGE_TRAILER_ {
|
||
|
UINT32 Signature;
|
||
|
UINT32 Version;
|
||
|
UINT32 HeaderSize;
|
||
|
UINT32 Flags;
|
||
|
UINT64 RunningDataForkOffset;
|
||
|
UINT64 DataForkOffset;
|
||
|
UINT64 DataForkLength;
|
||
|
UINT64 RsrcForkOffset;
|
||
|
UINT64 RsrcForkLength;
|
||
|
UINT32 SegmentNumber;
|
||
|
UINT32 SegmentCount;
|
||
|
GUID SegmentId;
|
||
|
APPLE_DISK_IMAGE_CHECKSUM DataForkChecksum;
|
||
|
|
||
|
UINT64 XmlOffset;
|
||
|
UINT64 XmlLength;
|
||
|
UINT8 Reserved1[120];
|
||
|
|
||
|
APPLE_DISK_IMAGE_CHECKSUM Checksum;
|
||
|
UINT32 ImageVariant;
|
||
|
UINT64 SectorCount;
|
||
|
UINT32 Reserved2[3];
|
||
|
} APPLE_DISK_IMAGE_TRAILER;
|
||
|
|
||
|
#pragma pack(pop)
|
||
|
|
||
|
#endif // APPLE_DISK_IMAGE_H
|