关于将 TZDEFINITION 保存到流以提交到二进制属性

时区属性 PidLidAppointmentTimeZoneDefinitionEndDisplayPidLidAppointmentTimeZoneDefinitionRecurPidLidAppointmentTimeZoneDefinitionStartDisplay 是二进制命名属性,其中每个属性都包含映射到 TZDEFINITION 结构的持久格式的流。

本主题介绍将 TZDEFINITION 保存到流以提交到三个二进制属性之一时可以使用的小 endian 格式。 在分析器中使用相同的 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 结构与单独保留不同,因此不能使用相同的代码来分析它。

另请参阅