Asynchrone und synchrone Moniker

Ein Client eines synchronen STANDARD-OLE-Monikers erstellt und enthält in der Regel einen Verweis auf den Moniker sowie den Bindungskontext, der während der Bindung verwendet werden soll. Die Komponenten, die an der Verwendung herkömmlicher Moniker beteiligt sind, sind im folgenden Diagramm dargestellt.

Diagramm, das den Client zeigt, der entweder mit dem Bindungskontext oder einem beliebigen Moniker für das vom System bereitgestellte Verbunden ist.

Clients erstellen in der Regel Standardmoniker durch Aufrufen von Funktionen wie CreateFileMoniker, CreateItemMonikeroder CreatePointerMoniker oder , da sie im persistenten Speicher gespeichert werden können, über OleSaveToStream und OleLoadFromStream. Moniker können auch aus einem Containerobjekt durch Aufrufen der IBindHost::CreateMoniker-Methode erhalten werden. Clients erstellen Bindungskontexte, indem sie die CreateBindCtx-Funktion aufrufen und dann den Bindungskontext mit Aufrufen von IMoniker::BindToStorage oder IMoniker::BindToObjectan den Moniker übergeben.

Wie im folgenden Diagramm gezeigt, erstellt und enthält ein Client eines asynchronen Monikers auch einen Verweis auf den Moniker und bindungskontext, der während der Bindung verwendet werden soll.

Diagramm, das die Verbindungen zwischen vom Client bereitgestellten, vom Schütz bereitgestellten und vom System bereitgestellten Verbindungen zeigt.

Um asynchrones Verhalten zu erhalten, implementiert der Client die IBindStatusCallback-Schnittstelle für ein bind-status-callback-Objekt und ruft entweder die RegisterBindStatusCallback-Funktion oder die CreateAsyncBindCtx-Funktion auf, um diese Schnittstelle beim Bindungskontext zu registrieren. Der Moniker übergibt einen Zeiger auf seine IBinding-Schnittstelle in einem Aufruf der IBindStatusCallback::OnStartBinding-Methode. Der Client teilt dem asynchronen Moniker mit, wie er beim Zurückgeben vom Aufruf der IBindStatusCallback::GetBindInfo-Methode des Monikers gebunden werden soll.

Asynchrone Moniker