#ifndef _SDI_H_INCLUDED
#define _SDI_H_INCLUDED
#define SDIMAGIC "$SDI0001"
#define SDIMAGICLEN (8)
#define SDITOCMAX (4)
enum MDB {
MDBunknown = 0,
MDBRAM,
MDBROM
};
typedef struct _SDI_header {
char magic[8];
QWORD MDBtype;
QWORD BootCodeOffset;
QWORD BootCodeSize;
QWORD VendorID; // 16-bit HEX value
QWORD DeviceID; // 16-bit HEX value
GUID DeviceModel;
QWORD DeviceRole; // int32 value
QWORD Reserved1;
GUID RuntimeGUID;
QWORD RuntimeOEMrev; // int32 value
QWORD Reserved2;
QWORD PageAlignment; // BLOB alignment value in pages
QWORD Reserved3[48];
QWORD Checksum;
} SDI_header;
typedef struct _SDI_TOC_record {
char BLOBtype[8]; // 3-4 bytes UPPERCASE value, 0-padded
QWORD Attr; // uint32 value
QWORD Offset;
QWORD Size;
QWORD BaseAddress;
// 0 for non-filesystem BLOBs, filesystem code for PART (as in MBR)
// 7 for NTFS, 6 for BIGFAT, etc.
QWORD Reserved[3];
} SDI_TOC_record;
typedef struct _SDIpage0 {
SDI_header h;
char Reserved[512];
SDI_TOC_record TOC[48];
} SDIpage0;
#endif // _SDI_H_INCLUDED
You can download
sdi.h by right-clicking.