关于序列化配置文件

如果没有字符串之类的,只需要定义数据结构总大小就行了
有字串的,需要定位字串的指针偏移
WORD sizeof(unsigned short)=2B
LPSTR sizeof(char*)=4B
LPWSTR sizeof(wchar_t*)=4B

以下面这个WFSCAMTAKEPICTEX2为例:
WFSCAMTAKEPICTEX2, *LPWFSCAMTAKEPICTEX2
{
WORD wCamera //2B
LPSTR lpszCamData //4B
LPWSTR lpszUNICODECamData //4B
LPSTR lpszPictureFile //4B
WORD wScanSize //2B
}

对应的序列化配置文件应该配置为:
[STRUCT_ExecuteCommand_1003]
Len=16 //数据结构总大小
Block0=2 //第一个字符串的指针偏移量
Block0Num=1
Block1=6
Block1Num=1
Block2=10
Block2Num=1
[STRUCT_ExecuteCommand_1003.Block0]
Type=StrZ
[STRUCT_ExecuteCommand_1003.Block1]
Type=WStrZ
[STRUCT_ExecuteCommand_1003.Block2]
Type=StrZ


2. 另一个例子
WFS_INF_CIM_CASH_UNIT_INFO
USHORT usCount;
LPWFSCIMCASHIN *lppCashIn;

WFSCIMCASHIN:
USHORT usNumber;
DWORD fwType;
DWORD fwItemType;
CHAR cUnitID[5];
CHAR cCurrencyID[3];
ULONG ulValues;
ULONG ulCashInCount;
ULONG ulCount;
ULONG ulMaximum;
USHORT usStatus;
BOOL bAppLock;
LPWFSCIMNOTENUMBERLIST lpNoteNumberList;
USHORT usNumPhysicalCUs;
LPWFSCIMPHCU * lppPhysical;
LPSTR lpszExtra;

WFSCIMNOTENUMBERLIST:
USHORT usNumOfNoteNumbers;
LPWFSCIMNOTENUMBER *lppNoteNumber;
WFSCIMNOTENUMBER:
USHORT usNoteID;
ULONG ulCount;

WFSCIMPHCU:
LPSTR lpPhysicalPositionName;
CHAR cUnitID[5];
ULONG ulCashInCount;
ULONG ulCount;
ULONG ulMaximum;
USHORT usPStatus;
BOOL bHardwareSensors;
LPSTR lpszExtra;


[STRUCT_InfoComplete_1303]
Len=6
Block0=2
Block0Num=0,2
Block0NumType=2
[STRUCT_InfoComplete_1303.Block0]
Len=54
Block0=40
Block0Num=1
Block1=46
Block1Num=44,2
Block1NumType=2
Block2=50
Block2Num=1
[STRUCT_InfoComplete_1303.Block0.Block0]
Len=6
Block0=2
Block0Num=0,2
Block0NumType=2
[STRUCT_InfoComplete_1303.Block0.Block0.Block0]
Len=6
[STRUCT_InfoComplete_1303.Block0.Block1]
Len=31
Block0=0
Block0Num=1
Block1=27
Block1Num=1
[STRUCT_InfoComplete_1303.Block0.Block1.Block0]
Type=StrZ
[STRUCT_InfoComplete_1303.Block0.Block1.Block1]
Type=StrZZ
[STRUCT_InfoComplete_1303.Block0.Block2]
Type=StrZZ






评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注