Compartilhar via


Sobre TZDEFINITION persistente em um fluxo para confirmar uma propriedade binária

As propriedades de fuso horário, PidLidAppointmentTimeZoneDefinitionEndDisplay, PidLidAppointmentTimeZoneDefinitionRecur e PidLidAppointmentTimeZoneDefinitionStartDisplay são propriedades nomeadas como binárias, cada uma contem um fluxo de mapas para o formato persistente de uma estrutura TZDEFINITION.

Este tópico descreve um pouco formato little endian que pode ser usado na persistência do fluxo TZDEFINITIONpara confirmar uma das três propriedades binárias. Usar o mesmo formato endian em um analisador para interpretar um valor de fluxo obtido a partir de uma dessas propriedades.

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

O número de versão principal é usado para alterar uma quebra. Clientes que não estejam familiarizados com o número de versão principal devem tratar a propriedade como se não estivesse lá. Clientes escrevendo a estrutura devem especificar a constante TZ_BIN_VERSION_MAJOR.

O número da versão secundária é usado para extensibilidade. Clientes que não são familiarizados com o número de versão secundária devem ler os dados que eles compreendem, e ignorar os dados que podem estar anexados a cada regra do fluxo atual. Clientes escrevendo a estrutura devem especificar a constante TZ_BIN_VERSION_MINOR.

Se uma analisador não entende a versão principal do cabeçalho, ele não deve ler o restante da estrutura e se comportar como se os dados estivessem ausentes. Se uma analisador não entende a versão secundária de cabeçalho, deverá usar cbHeaderpara ignorar partes que não entende e avançar para ler as partes do fluxo que ele entende.

O valor de wFlags sempre éTZDEFINITION_FLAG_VALID_KEYNAME. O nome da chave tem um limite de tamanho de MAX_PATH.

Se uma analisador não reconhecer a versão principal de uma regra, o cliente deve ignorar a regra e usar cbRule para avançar para a regra seguinte. Se uma analisador não reconhecer a versão secundária de uma regra, o cliente só deve analisar as partes compreensíveis da regra.

Quando uma estrutura TZDEFINITION persistir para um fluxo, o analisador não deve tentar gravar as informações que ele não entende.

O número máximo de regras é 1024.

Observe que a estruturaTZREG é mantida aqui, diferente de quando ela continua sozinha, por isso o mesmo código mesmo não pode ser usado para análise.

Confira também