非同期モニカーと同期モニカー

標準の同期OLEモニカーのクライアントは、通常、モニカーへの参照と、バインド中に使用されるバインドコンテキストを作成して保持します。 従来のモニカーの使用に関連するコンポーネントを次の図に示します。

Diagram that shows the Client connected to either Bind Context or Any Moniker for the System-Provided.

クライアントは、通常、CreateFileMonikerCreateItemMonikerCreatePointerMonikerなどの関数を呼び出すことによって、またはOleSaveToStreamOleLoadFromStreamを使用して永続ストレージに保存できるため、標準モニカーを作成します。 モニカーは、IBindHost :: CreateMonikerメソッドを呼び出すことによって、コンテナーオブジェクトから取得することもできます。 クライアントは、CreateBindCtx関数を呼び出してバインドコンテキストを作成し、IMoniker :: BindToStorageまたはIMoniker :: BindToObjectの呼び出しを使用してバインドコンテキストをモニカーに渡します。

次の図に示すように、非同期モニカーのクライアントは、バインド中に使用されるモニカーとバインドコンテキストへの参照も作成して保持します。

Diagram that shows the connections between Client-Provided, Monker-Provided, and System-Provided.

非同期動作を取得するために、クライアントは、バインドステータスコールバックオブジェクトにIBindStatusCallbackインターフェイスを実装し、RegisterBindStatusCallback関数またはCreateAsyncBindCtx関数のいずれかを呼び出して、このインターフェイスをバインドコンテキストに登録します。 モニカーは、IBindStatusCallback :: OnStartBindingメソッドの呼び出しでIBindingインターフェイスへのポインターを渡します。 クライアントは、モニカーのIBindStatusCallback :: GetBindInfoメソッドの呼び出しから戻ったときにバインドする方法を非同期モニカーに通知します。

非同期モニカー