レプリケーション状態のマシンについて
適用対象: Outlook 2013 | Outlook 2016
このトピックでは、Microsoft Outlook 2013およびMicrosoft Outlook 2010データ レプリケーション用のステート マシンの概要について説明します。
注:
レプリケーション API は、このトピックの手順に従って完全に実装する必要があります。この API は、役に立つかサポートされます。 レプリケーション API は、サーバーとの間で Outlook 2013 または Outlook 2010 の変更をレプリケートするためだけに使用できます。
IOSTX とステート マシン
クライアントは 、IOSTX::SyncBeg、 IOSTX::SyncEnd、 IOSTX::SyncHdrBeg、 および IOSTX::SyncHdrEnd をシーケンスで呼び出して、Outlook 2013 または Outlook 2010 のフォルダーとアイテムをローカル ストアとサーバー間で同期します。 呼び出しの実際のシーケンスは、レプリケートする必要があるデータ (たとえば、Outlook 2013 または Outlook 2010 フォルダーの階層、Outlook 2013 または Outlook 2010 フォルダー、メール アイテム、予定表アイテムなど) と同期の方向 (ローカル ストアからサーバーへのアップロード、サーバーからローカル ストアへのダウンロードなど) によって異なります。 一般的な一連の呼び出しを次に示します。
クライアントは IOSTX::SyncBeg を呼び出してレプリケーションを開始し、状態識別子と、対応するデータ構造のアドレスへのポインターを指定します。
Outlook 2013 または Outlook 2010 は、データ構造を割り当て、クライアントに必要な情報を使用してデータ構造を初期化します。
クライアントはレプリケーションを実行し、データ構造を更新して、レプリケーションに関する必要な情報をローカル ストアに伝達します。
レプリケーションを実行した後、クライアントは IOSTX::SetSyncResult と IOSTX::SyncEnd を呼び出して、特定のレプリケーションの完了をローカル ストアに通知します。
注:
クライアントは常に IOSTX::SyncEnd を呼び出して、クライアントが特定の状態で開始したレプリケーションを終了します。 クライアントが同期する必要がある全体的なデータに応じて、クライアントは IOSTX::SyncBeg と IOSTX::SyncEnd の呼び出しのペアを複数回呼び出す場合があります。
状態テーブル
注:
次の表に、レプリケーション状態マシンのすべての有効な状態と、対応する状態識別子とデータ構造を示します。 [ データレプリケート ] 列の "アイテム" という用語には、メール、予定表、連絡先、メモ、仕訳帳、タスクアイテムが含まれます。 ローカル ストアからサーバーに変更をレプリケートする場合は、"UPLOAD" を指定する状態識別子と、"UP" プレフィックスを持つデータ構造 ( LR_SYNC_UPLOAD_HIERARCHY 、 UPHIER など) を使用します。 サーバーからローカル ストアに変更をレプリケートする場合は、"DOWNLOAD" を指定する状態識別子と、"DN" プレフィックスを持つデータ構造 ( LR_SYNC_DOWNLOAD_HIERARCHY や DNHIER など) を使用します。
状態 |
レプリケートされたデータ |
状態識別子 |
データ構造 |
---|---|---|---|
アイドル状態 |
なし |
LR_SYNC_IDLE |
なし |
同期状態 |
フォルダーまたはアイテム |
LR_SYNC |
同期 |
階層の状態をアップロードする |
フォルダー |
LR_SYNC_UPLOAD_HIERARCHY |
UPHIER |
フォルダーの状態をアップロードする |
フォルダー |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
コンテンツの状態を同期する |
アイテム |
LR_SYNC_CONTENTS |
SYNCCONT |
テーブルの状態をアップロードする |
アイテム |
LR_SYNC_UPLOAD_TABLE |
UPTBL |
メッセージの状態をアップロードする |
アイテム |
LR_SYNC_UPLOAD_MESSAGE |
UPMSG |
読み取り状態のアップロード |
アイテム |
LR_SYNC_UPLOAD_MESSAGE_READ |
UPREAD |
アップロードの削除状態 |
アイテム |
LR_SYNC_UPLOAD_MESSAGE_DEL |
UPDEL |
階層の状態をダウンロードする |
フォルダー |
LR_SYNC_DOWNLOAD_HIERARCHY |
DNHIER |
テーブルの状態をダウンロードする |
アイテム |
LR_SYNC_DOWNLOAD_TABLE |
DNTBL |
メッセージ ヘッダーの状態をダウンロードする |
メッセージ ヘッダー |
LR_SYNC_DOWNLOAD_HEADER |
HDRSYNC |
例: フォルダー階層のアップロード
フォルダーの階層をアップロードするときに、次の一連の手順が実行されます。
手順 |
操作 |
状態 |
関連データ構造 |
---|---|---|---|
1. | クライアントは 、IOSTX::SyncBeg を使用して階層のアップロードを開始します。 |
LR_SYNC_UPLOAD_HIERARCHY |
UPHIER |
2. | Outlook 2013 または Outlook 2010 では、 UPHIER にクライアントの情報が設定されます。 これには、[out] パラメーターの初期化が含まれます。 iEnt は 0 に設定され、 cEnt はアップロードが必要な階層内のフォルダーの数に設定されます。 |
LR_SYNC_UPLOAD_HIERARCHY |
UPHIER |
3。 | クライアントは、実際の階層のアップロードを行います。 たとえば、 cEnt が 10 の場合、10 個のフォルダーごとに、クライアントは IOSTX::SyncBeg を呼び出し、フォルダーをアップロードするための適切な状態識別子とデータ構造を指定します。 |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
4. | Outlook 2013 または Outlook 2010 は、フォルダーのアップロードの理由、フォルダー オブジェクトへのポインター、フォルダーのエントリ ID など、その [out] パラメーターを初期化することで UPFLD を設定します。 |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
5. | クライアントは、指定したフォルダーをアップロードします。 |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
6. | クライアントは、フォルダーアップロードの完了をローカル ストアに通知します。成功すると、クライアントは UPFLD の [in] パラメーター ulFlags を UPF_OKに設定し、IOSTX::SetSyncResult (S_OK) と IOSTX::SyncEnd を呼び出します。 失敗した場合、クライアントはUPF_OK フラグを使用して ulFlags を設定しません。 これは、IOSTX::SetSyncResult を呼び出し、HRESULT 値と IOSTX::SyncEnd を渡します。 |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
7. | UPF_OKが設定されている場合、Outlook 2013 または Outlook 2010 はフォルダーをアップロードするための内部要求をクリアします。 その後、ulFlags の状態に関係なく、内部簿記情報がクリーンされます。 階層内には引き続きアップロードするフォルダーがありますが (iEnt はまだ cEnt 未満です)、クライアントと Outlook 2013 または Outlook 2010 は手順 3 から 7 を繰り返します。 |
LR_SYNC_UPLOAD_FOLDER |
UPFLD |
8. | クライアントは、階層のアップロードの完了をローカル ストアに通知します。成功すると、クライアントは UPHIER で [in] フラグを UPH_OKに設定し、 IOSTX::SetSyncResult (S_OK) と IOSTX::SyncEnd を呼び出します。 失敗した場合、クライアントは UPH_OK フラグを設定しません。 これは、IOSTX::SetSyncResult を呼び出し、HRESULT 値と IOSTX::SyncEnd を渡します。 |
LR_SYNC_UPLOAD_HIERARCHY |
UPHIER |
9. | UPH_OKが設定されている場合、Outlook 2013 または Outlook 2010 は階層をアップロードするための内部要求をクリアします。 その後、ulFlags の状態に関係なく、内部簿記情報がクリーンされます。 |
LR_SYNC_UPLOAD_HIERARCHY |
UPHIER |