若要將二進位屬性認可至資料流的保存 TZDEFINITION 的相關
時區屬性 PidLidAppointmentTimeZoneDefinitionEndDisplay、 PidLidAppointmentTimeZoneDefinitionRecur 和 PidLidAppointmentTimeZoneDefinitionStartDisplay 是二進位具名屬性,每個屬性都包含對應至 TZDEFINITION 結構之保存格式的數據流。
本主題描述將 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 結構的方式與單獨保存時不同,因此無法使用相同的程式代碼來剖析它。