次の方法で共有


ピア配布について

ピア配布 API は、Windows 7、Windows Server 2008 R2、Windows 8、および Windows Server 2012 のブランチ キャッシュ機能をサポートしており、リモート オフィスからアクセスした場合に一元化されたアプリケーションのネットワーク応答性を向上させ、ネットワーク セキュリティ テクノロジに干渉することなく全体のワイド エリア ネットワーク (WAN) 使用率を削減できる一連のプラットフォーム API を提供します。

ピア配布システムは、デジタル コンテンツを提供する発行元と、それを要求するコンシューマーの両方が使用するプラットフォーム API のセットを提供します。 これらのロールを簡単に区別するには、サーバー ロールのパブリッシャーとクライアント ロールのコンシューマーを考える方が簡単な場合があります。 ただし、これらの概念的な役割を除いて、ピア配布サービスは、すべてのピア配布ノードがデジタル コンテンツを発行および使用する機能によって示されているように、真のピア システムであることを覚えておく必要があります。 ピア配布プラットフォーム API は、Win32 インポート ライブラリ (PeerDist.Lib) によってパブリッシャーとコンシューマーに公開されます。

パブリッシャーによって提供され、ピア配布サービスを使用してコンシューマーによって取得されるコンテンツのライフサイクルは、次の操作で構成されます。

説明
コンテンツの発行 発行は、 コンテンツ情報と呼ばれるコンテンツの説明、または略して コンテンツ情報 を生成するために行われます。 このコンテンツ情報は、ピア配布サービスのインスタンスがコンテンツを認証および再構築するために使用できます。 アプリケーションによってピア配布サービス (概念的にはサーバー側の操作) にコンテンツが発行されると、そのコンテンツは、スレッド アクセス トークンに関連付けられているユーザーの SID に基づくパブリッシャー ID に関連付けられます。 このバインドは、承認されていないエンティティによるコンテンツへのアクセスを制限するために行われます。 ただし、コンテンツ情報へのアクセスは、コンテンツ情報を使用してピアまたはホスト型キャッシュからコンテンツを取得できるため、コンテンツ情報へのアクセスはコンテンツ自体へのアクセスと同等であることに注意してください。
Windows 8には新しいバージョンのコンテンツ情報データ構造がありますが、以前のバージョンは引き続きサポートされています。 Windows 7 クライアントと相互運用するために、管理者は、以前のバージョンのコンテンツ情報データ構造を使用するようにピア配布サービスを構成できます。
コンテンツの取得 コンシューマーがピア配布サービスからコンテンツを取得するには、そのコンテンツに関連付けられている公開されたコンテンツ情報へのアクセスを提供する必要があります。 コンテンツの発行に使用されるピア配布サービスは、関連するコンテンツ情報を提供できます。 コンシューマーがコンテンツ情報を取得すると、他のピア配布 API を使用して、ピア配布サービスにコンテンツを要求できます。 ピア配布サービスは、ローカル ネットワークからコンテンツの取得を試みます。 コンテンツが使用できない場合、クライアント アプリケーションはソース サーバーからコンテンツを取得します。
パブリケーションの削除 Peer Distribution サービスにコンテンツを発行したアプリケーションの場合、コンテンツの発行を取り消せるように PeerDistServerUnpublish 関数が提供されています。 コンテンツが発行解除されると、ローカルのピア配布サービスは、そのコンテンツに関連付けられているコンテンツ情報を提供しなくなります。

非同期入力候補

ピア配布 API は非同期 API モデルをサポートしており、その結果、ピア分散 API では、非同期ピア分散操作の完了を処理するためのシグナルメカニズムとして、I/O 完了ポートまたはイベントのいずれかを使用できます。 どちらのメカニズムでも、ピア分散では OVERLAPPED 構造体が使用されます 。 一般に、ピア分散は 、OVERLAPPED 構造体と、クライアントが非同期 API 関数に渡す出力パラメーターの所有権を取得します。 クライアントは、特定の非同期関数が完了するまで、これらのリソースにアクセスすることはできません。 非同期関数が完了するとすぐに、ピア配布サービスはこれらのリソースへのアクセスを必要とせず、呼び出し元のアプリケーションが適合すると再利用される可能性があります。

関数が ERROR_IO_PENDING 以外のエラー コードを返す場合、非同期完了は発生しません。 ERROR_IO_PENDING以外の値が返された場合は、呼び出しが同期的に失敗したことを意味します。 ピアディストリビューション API が ERROR_IO_PENDINGを返す場合、呼び出し元は非同期完了を待機する必要があります。

非同期完了のエラー コードは、次の 2 つの方法のいずれかで取得できます。

I/O 入力候補ポート ベースの完了

ユーザーは、完了ポート ハンドルと完了キーを次の API 関数に提供することで、I/O 完了ポート メカニズムを呼び出します。

PeerDistRegisterForStatusChangeNotification
PeerDistServerPublishStream
PeerDistServerOpenContentInformation
PeerDistClientOpenContent

ユーザーは、 CreateIoCompletionPort を呼び出して完了ポートを作成します。 この完了ポート ハンドルは、他の非同期 I/O 操作とピア配布固有の操作に同時に使用できます。

呼び出し元は 、GetQueuedCompletionStatus 関数を使用して非同期完了を管理する必要があります。 非同期操作が失敗した場合、 GetQueuedCompletionStatus 関数は FALSE を 返し、 GetLastError は適切なエラー コードを返します。 エラー コードがERROR_SUCCESS以外の場合、呼び出し元は OVERLAPPED 構造体のすべてのフィールドを無視する必要があります。 GetQueuedCompletionStatus 関数がTRUE を返した場合、非同期操作は成功します。

詳細については、「 I/O 完了ポート」を参照してください。

イベント ベースの完了

呼び出し元が OVERLAPPED 構造体の hEvent フィールドに有効なイベント ハンドルを設定した場合、ピア配布はそれを使用して、関連付けられている非同期 I/O 操作が完了したことを通知します。

スレッド呼び出し元は、待機関数のいずれかで OVERLAPPED 構造体の手動リセット イベント オブジェクトへのハンドルを指定することで、重複する操作を管理できます。 イベントが通知された後、呼び出し元は適切な OVERLAPPED 構造体を渡して PeerGetOverlappedResult を呼び出す必要があります。 PeerGetOverlappedResultFALSE を 返し、呼び出し元はエラー コードを取得するために GetLastError を呼び出す必要があります。 エラー コードがERROR_SUCCESS以外の場合、呼び出し元は OVERLAPPED 構造体のすべてのフィールドを無視する必要があります。 PeerGetOverlappedResult 関数が TRUE を返した場合、非同期操作は成功します。

呼び出し元がイベントと共に完了ポートを提供する場合、イベントは完了メカニズムとして使用されます。

Windows 7:PeerGetOverlappedResult の代わりに GetOverlappedResult 関数を使用します。

ピア配布 API リファレンス