根据规范定义如下结构:
#pragma pack(push)
#pragma pack(1)
typedef struct _DSD_DEE_ST_
{
unsigned char containerId[4];
unsigned char recordNumber;
unsigned char containerType;
unsigned char writeCounter[2];
unsigned char integityCode[2];
}DSD_DEE_ST;
typedef struct __discover_rds__
{
DSD_DEE_ST rdsDee;
int recordlen;
unsigned char record[160];
}DISRDS;
typedef struct __discover_data_store_data_header_part1__
{
unsigned char container[4];
unsigned char record;
unsigned char type;
}DISDSDHPART1;
typedef struct __discover_data_store_data_header__
{
DISDSDHPART1 hardPart1;
unsigned char updateCodeHash[16];
unsigned char updateCodeMask[16];
unsigned char operatorData[1];
}DISDSDH;
typedef struct __discover_data_store_data_header_signed__{
DSD_DEE_ST rdsDee;
unsigned char encipheredUpdateCode[16];
unsigned char operatorData[1];
}DISDSDHSIGNED;
#pragma pack(pop)
read data storage的数据需要按顺序保存,个人采用动态链表进行保存,可以根据containerId 查找。实现一个功能丰富的动态链表是十分重要的,如果各位有需要我可以分享链表的管理模块,该模块已经相当稳定,功能丰富,可以满足各种需求。
将读取的模板是用对应的结构体转换,只需要修改特定位置的值即可,起核心就在此。