Freigeben über


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.

Siehe auch