Informationen zur Persistenz von TZDEFINITION für einen Stream, um ein Commit zu einer binären Eigenschaft durchzuführen
Die Zeitzoneneigenschaften PidLidAppointmentTimeZoneDefinitionEndDisplay, PidLidAppointmentTimeZoneDefinitionRecur und PidLidAppointmentTimeZoneDefinitionStartDisplay sind binäre benannte Eigenschaften, von denen jede einen Stream enthält, der dem persistenten Format einer TZDEFINITION-Struktur zugeordnet ist.
In diesem Thema wird ein kleines Endianformat beschrieben, das beim Beibehalten von TZDEFINITION in einem Stream verwendet werden kann, um einen Commit für eine von drei binären Eigenschaften durchzuführen. Verwenden Sie das gleiche Endianformat in einem Parser, um einen Streamwert zu interpretieren, der von einer dieser Eigenschaften abgerufen wird.
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
Die Hauptversionsnummer wird verwendet, um einen Breaking Change vorzunehmen. Clients, die mit der Hauptversionsnummer nicht vertraut sind, sollten die Eigenschaft so behandeln, als wäre sie nicht vorhanden. Clients, die die -Struktur schreiben, sollten die Konstante TZ_BIN_VERSION_MAJOR angeben.
Die Nebenversionsnummer wird für die Erweiterbarkeit verwendet. Clients, die mit der Nebenversionsnummer nicht vertraut sind, sollten die ihnen vertrauten Daten lesen und die Daten überspringen, die an jede Regel oder an den Gesamtdatenstrom angefügt werden können. Clients, die die -Struktur schreiben, sollten die Konstante TZ_BIN_VERSION_MINOR angeben.
Wenn ein Parser die Hauptversion des Headers nicht versteht, sollte er den Rest der Struktur nicht lesen und sich so verhalten, als ob die Daten fehlen. Wenn ein Parser die Nebenversion des Headers nicht versteht, sollte er cbHeader verwenden, um die Teile zu ignorieren, die er nicht versteht, und weiter, um die Teile des Datenstroms zu lesen, die er versteht.
Der Wert von wFlags ist immer TZDEFINITION_FLAG_VALID_KEYNAME. Der Schlüsselname hat eine maximale Größe von MAX_PATH.
Wenn ein Parser die Hauptversion einer Regel nicht erkennt, sollte der Client die Regel ignorieren und cbRule verwenden, um zur nächsten Regel zu wechseln. Wenn ein Parser die Nebenversion einer Regel nicht erkennt, sollte der Client nur die Teile der Regel analysieren, die er versteht.
Beim Beibehalten einer TZDEFINITION-Struktur in einem Stream sollte ein Parser nicht versuchen, Informationen zu schreiben, die er nicht versteht.
Die maximale Anzahl von Regeln ist 1024.
Beachten Sie, dass die TZREG-Struktur hier anders beibehalten wird als bei der alleinigen Beibehaltung, sodass derselbe Code nicht für die Analyse verwendet werden kann.