次の方法で共有


バイナリ プロパティにコミットするためにストリームに TZDEFINITION を保持することについて

タイム ゾーン プロパティ PidLidAppointmentTimeZoneDefinitionEndDisplayPidLidAppointmentTimeZoneDefinitionRecurPidLidAppointmentTimeZoneDefinitionStartDisplay はバイナリの名前付きプロパティであり、それぞれに TZDEFINITION 構造体の永続化された形式にマップされるストリームが含まれています。

このトピックでは、 TZDEFINITION をストリームに永続化して 3 つのバイナリ プロパティのいずれかにコミットするときに使用できる、少しエンディアン形式について説明します。 パーサーで同じエンディアン形式を使用して、これらのプロパティの 1 つから取得されたストリーム値を解釈します。

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

メジャー バージョン番号は、破壊的変更を行うために使用されます。 メジャー バージョン番号に慣れていないクライアントは、プロパティが存在しないかのように扱う必要があります。 構造体を記述するクライアントは、定数 TZ_BIN_VERSION_MAJORを指定する必要があります。

マイナー バージョン番号は拡張のために使用されます。 マイナー バージョン番号に慣れていないクライアントは、理解しているデータを読み取り、各ルールまたはストリーム全体に追加される可能性があるデータをスキップする必要があります。 構造体を記述するクライアントは、定数 TZ_BIN_VERSION_MINORを指定する必要があります。

パーサーがヘッダーのメジャー バージョンを理解していない場合は、構造体の残りの部分を読み取らず、データが欠落しているかのように動作する必要があります。 パーサーがヘッダーのマイナー バージョンを理解していない場合は、 cbHeader を使用して、理解していない部分を無視し、理解しているストリームの部分を読み取る前に実行する必要があります。

wFlags の値は常にTZDEFINITION_FLAG_VALID_KEYNAME。 キー名の最大サイズは MAX_PATHです。

パーサーがルールのメジャー バージョンを認識しない場合、クライアントはルールを無視し、 cbRule を 使用して次のルールに進む必要があります。 パーサーが規則のマイナー バージョンを認識しない場合、クライアントは、理解しているルールの部分のみを解析する必要があります。

TZDEFINITION 構造体をストリームに永続化する場合、パーサーは理解できない情報を書き込もうとしないでください。

ルールの最大数は 1024 です。

TZREG 構造体は、単独で永続化される場合とは異なる方法で永続化されるため、同じコードを使用して解析することはできません。

関連項目