How to: Parse a Stream from a Binary Property to Read the TZREG Structure
This topic shows how to read the TZREG structure from the persisted format stored in the binary property PidLidTimeZoneStruct.
TZREG* BinToTZREG(ULONG cbReg, LPBYTE lpbReg)
{
if (!lpbReg) return NULL;
// Update this if parsing code is changed.
if (cbReg < 3*sizeof(long) + 2*sizeof(WORD) + 2*sizeof(SYSTEMTIME)) return NULL;
TZREG tzReg = {0};
LPBYTE lpPtr = lpbReg;
tzReg.lBias = *((long*)lpPtr);
lpPtr += sizeof(long);
tzReg.lStandardBias = *((long*)lpPtr);
lpPtr += sizeof(long);
tzReg.lDaylightBias = *((long*)lpPtr);
lpPtr += sizeof(long);
lpPtr += sizeof(WORD);// reserved
tzReg.stStandardDate = *((SYSTEMTIME*)lpPtr);
lpPtr += sizeof(SYSTEMTIME);
lpPtr += sizeof(WORD);// reserved
tzReg.stDaylightDate = *((SYSTEMTIME*)lpPtr);
lpPtr += sizeof(SYSTEMTIME);
TZREG* ptzReg = NULL;
ptzReg = new TZREG;
if (ptzReg)
{
*ptzReg = tzReg;
}
return ptzReg;
}