Сведения о сохранении 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 сохраняется здесь иначе, чем при сохранении отдельно, поэтому для ее анализа нельзя использовать один и тот же код.