Partager via


À propos de la persistance de TZDEFINITION dans un flux de validation dans une propriété binaire

Les propriétés de fuseau horaire , PidLidAppointmentTimeZoneDefinitionEndDisplay, PidLidAppointmentTimeZoneDefinitionRecur et PidLidAppointmentTimeZoneDefinitionStartDisplay sont des propriétés nommées binaires, chacune contenant un flux mappé au format persistant d’une structure TZDEFINITION .

Cette rubrique décrit un format d’endian qui peut être utilisé lors de la persistance de TZDEFINITION dans un flux pour valider l’une des trois propriétés binaires. Utilisez le même format endian dans un analyseur pour interpréter une valeur de flux obtenue à partir de l’une de ces propriétés.

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

Le numéro de version principale est utilisé pour apporter une modification cassant. Les clients qui ne connaissent pas le numéro de version principale doivent traiter la propriété comme si elle n’y était pas. Les clients qui écrivent la structure doivent spécifier la constante TZ_BIN_VERSION_MAJOR.

Le numéro de version mineure est utilisé pour l’extensibilité. Les clients qui ne connaissent pas le numéro de version mineure doivent lire les données qu’ils comprennent et ignorer les données qui peuvent être ajoutées à chaque règle ou au flux global. Les clients qui écrivent la structure doivent spécifier la constante TZ_BIN_VERSION_MINOR.

Si un analyseur ne comprend pas la version principale de l’en-tête, il ne doit pas lire le reste de la structure et se comporter comme si les données sont manquantes. Si un analyseur ne comprend pas la version mineure de l’en-tête, il doit utiliser cbHeader pour ignorer les parties qu’il ne comprend pas et avancer pour lire les parties du flux qu’il comprend.

La valeur de wFlags est toujours TZDEFINITION_FLAG_VALID_KEYNAME. Le nom de clé a une taille maximale de MAX_PATH.

Si un analyseur ne reconnaît pas la version principale d’une règle, le client doit ignorer la règle et utiliser cbRule pour passer à la règle suivante. Si un analyseur ne reconnaît pas la version mineure d’une règle, le client doit analyser uniquement les parties de la règle qu’il comprend.

Lors de la persistance d’une structure TZDEFINITION dans un flux, un analyseur ne doit pas essayer d’écrire des informations qu’il ne comprend pas.

Le nombre maximal de règles est 1024.

Notez que la structure TZREG est conservée ici différemment qu’en cas de persistance seule, de sorte que le même code ne peut pas être utilisé pour l’analyser.

Voir aussi