How to: Parse a stream from a binary property to read the TZREG structure
Office 2013 and later
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;
}
Show: