CfConnectSyncRoot 関数 (cfapi.h)

同期プロバイダーと同期フィルター API の間の双方向通信を開始します。

構文

HRESULT CfConnectSyncRoot(
  [in]           LPCWSTR                        SyncRootPath,
  [in]           const CF_CALLBACK_REGISTRATION *CallbackTable,
  [in, optional] LPCVOID                        CallbackContext,
  [in]           CF_CONNECT_FLAGS               ConnectFlags,
  [out]          CF_CONNECTION_KEY              *ConnectionKey
);

パラメーター

[in] SyncRootPath

同期ルートへのパス。

[in] CallbackTable

登録するコールバック テーブル。 このパラメーターは、プラットフォームからのさまざまな種類の要求に対して呼び出す関数を同期プロバイダーがライブラリに指示する方法です。 これは、コールバック型と関連する関数ポインターを含む構造体の配列です。 同期プロバイダーは、実装するコールバックのみを登録する必要があります。 CallbackTable 配列は常に CF_CALLBACK_REGISTRATION_END で終わる必要があります。

[in, optional] CallbackContext

CallbackContext は、同期プロバイダーの利便性を高める目的で提供されます。 プラットフォームはこの CallbackContext を 記憶し、現在の同期ルートでコールバック関数の 1 つが呼び出されるたびに同期プロバイダーに返されます。 CallbackContext の適切な用途は、この接続の状態を維持する同期プロバイダー独自の構造体へのポインターです。

[in] ConnectFlags

同期プロバイダーは、 ConnectFlags をこの API に渡すことによって、コールバックが呼び出されたときに追加情報を提供するように要求できます。 次のフラグがサポートされています。

Request 説明
REQUEST_PROCESS_INFO このフラグが指定されている場合、プラットフォームはコールバック パラメーターでハイドレート プロセスの完全なイメージ パスを返します。
REQUIRE_FULL_FILE_PATH このフラグが指定されている場合、プラットフォームはコールバック パラメーターで要求されているプレースホルダーの完全なパスを返します。
BLOCK_SELF_IMPLICIT_HYDRATION CfHydratePlaceholder を介して実行されない暗黙的なハイドレーションは、ウイルス対策ソフトウェアが、ハイドレートされていないクラウド ファイル プレースホルダーで同期プロバイダーのファイル システム アクティビティをスキャンするときに発生する可能性があります。 この種の暗黙的なハイドレーションは想定されていません。 同期プロバイダーが暗黙的なハイドレーション操作自体を開始しない場合は、後で FETCH_DATA コールバックが失敗するのではなく、このような暗黙的なハイドレーション操作をすべてブロックするようにプラットフォームに指示できます。

[out] ConnectionKey

正常に返されると、この API は不透明な ConnectionKey を 同期プロバイダーに返します。 これは、確立されたばかりの通信チャネルを表し、同期プロバイダーは ConnectionKey を記憶し、さまざまな同期プロバイダー API を呼び出すときにそれを渡すことができます。 同期プロバイダーが単一の接続の確立のみを想定している場合は、 ConnectionKey をグローバルに格納できます。 ただし、プラットフォームでは、複数の異なる同期ルートに同時に接続する 1 つのプロバイダー プロセスがサポートされており、接続ごとに異なる ConnectionKey が返されます。 各 ConnectionKey を格納するのに適した場所は、 CallbackContext によって識別される同期プロバイダーの内部構造内にあります。

戻り値

この関数が成功すると、 が返されます S_OK。 そうでない場合は、HRESULT エラー コードを返します。

注釈

これにより、同期プロバイダーと同期フィルターの間の双方向通信チャネルが開始されます。 同期プロバイダーは通常、初期化され、要求を処理する準備ができたら、起動直後にこの API を呼び出します。

同期ルートは、接続する前にプラットフォームに登録する必要があります。 特定の SyncRootPath に対して、任意の時点で最大 1 つの接続を確立できます。

同期プロバイダーには、接続する同期ルートへの WRITE_DATA または WRITE_DAC アクセス権が必要です。または、 HRESULT(ERROR_CLOUD_FILE_ACCESS_DENIED) で API が失敗します。

要件

要件
サポートされている最小のクライアント Windows 10バージョン 1709 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー cfapi.h
Library CldApi.lib
[DLL] CldApi.dll

こちらもご覧ください

CfHydratePlaceholder