Поделиться через


Сведения о сохранении TZDEFINITION в потоке для помещения в двоичное свойство

Свойства часового пояса PidLidAppointmentTimeZoneDefinitionEndDisplay, PidLidAppointmentTimeZoneDefinitionRecur и PidLidAppointmentTimeZoneDefinitionStartDisplay являются двоичными свойствами, каждое из которых содержит поток, соответствующий сохраняемому формату структуры TZDEFINITION .

В этом разделе описывается небольшой формат endian, который можно использовать при сохранении TZDEFINITION в потоке для фиксации в одном из трех двоичных свойств. Используйте тот же формат endian в средстве синтаксического анализа для интерпретации значения потока, полученного из одного из этих свойств.

BYTE  bMajorVersion;    // breaking change
BYTE  bMinorVersion;    // extensibility
WORD  cbHeader;         // size of following data until TZREG sub structure
WORD  wFlags;
if (TZDEFINITION_FLAG_VALID_GUID)
   GUID  guid;                // guid
if (TZDEFINITION_FLAG_VALID_KEYNAME)     
    WORD   cchKeyName;        // does not include null char
    WCHAR  rgchKeyName;       // not null terminated
    WORD  cRules;             // number of rules
// for each rule
   BYTE        bMajorVersion;         // breaking change
   BYTE        bMinorVersion;         // extensibility
   WORD        cbRule;                // size of following data
   WORD        wFlags;                // flags
   SYSTEMTIME  stStart;               // GMT when this rule starts
// Following are the fields of the TZREG sub structure
   long        lBias;                // offset from GMT
   long        lStandardBias;        // offset from bias during standard time
   long        lDaylightBias;        // offset from bias during daylight time
   SYSTEMTIME  stStandardDate;       // time to switch to standard time
   SYSTEMTIME  stDaylightDate;       // time to switch to daylight time

Основной номер версии используется для внесения критического изменения. Клиенты, не знакомые с номером основной версии, должны относиться к свойству так, как будто его нет. Клиенты, записывщие структуру, должны указывать константную TZ_BIN_VERSION_MAJOR.

Дополнительный номер версии используется для расширяемости. Клиенты, не знакомые с дополнительным номером версии, должны считывать понятные данные и пропускать данные, которые могут быть добавлены в каждое правило или в общий поток. Клиенты, записывщие структуру, должны указывать константную TZ_BIN_VERSION_MINOR.

Если средство синтаксического анализа не понимает основную версию заголовка, он не должен читать остальную часть структуры и вести себя так, как будто данные отсутствуют. Если средство синтаксического анализа не понимает дополнительную версию заголовка, он должен использовать cbHeader , чтобы игнорировать части, которые он не понимает, и перейти к чтению частей потока, которые он понимает.

Значение wFlags всегда TZDEFINITION_FLAG_VALID_KEYNAME. Имя ключа имеет максимальный размер MAX_PATH.

Если средство синтаксического анализа не распознает основную версию правила, клиент должен игнорировать это правило и использовать cbRule для перехода к следующему правилу. Если средство синтаксического анализа не распознает дополнительную версию правила, клиент должен анализировать только те части правила, которые он понимает.

При сохранении структуры TZDEFINITION в потоке средство синтаксического анализа не должно пытаться записать не понятную ему информацию.

Максимальное количество правил — 1024.

Обратите внимание, что структура TZREG сохраняется здесь иначе, чем при сохранении отдельно, поэтому для ее анализа нельзя использовать один и тот же код.

См. также