À 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.