This documentation is archived and is not being maintained.

How to: Parse a Stream from a Binary Property to Read the TZREG Structure

Office 2007

This topic shows how to read the TZREG structure from the persisted format stored in the binary property dispidTimeZoneStruct.

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;
}

See Also

How to: Read Time Zone Properties from an Appointment


Show: