IBindCtx::RegisterObjectParam-Methode (objidl.h)

Ordnet ein Objekt einem Zeichenfolgenschlüssel in der Zeichenfolgenschlüsseltabelle des Bindungskontexts mit Zeigern zu.

Syntax

HRESULT RegisterObjectParam(
  [in] LPOLESTR pszKey,
  [in] IUnknown *punk
);

Parameter

[in] pszKey

Der Bindungskontextzeichenfolgenschlüssel , unter dem das Objekt registriert wird. Beim Schlüsselzeichenfolgenvergleich wird die Groß-/Kleinschreibung beachtet.

[in] punk

Ein Zeiger auf die IUnknown-Schnittstelle für das Objekt, das registriert werden soll.

Die -Methode ruft AddRef für den Zeiger auf.

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY und S_OK zurückgeben.

Hinweise

Ein Bindungskontext verwaltet eine Tabelle mit Schnittstellenzeigern, die jeweils einem Zeichenfolgenschlüssel zugeordnet sind. Dies ermöglicht die Kommunikation zwischen einer Monikerimplementierung und dem Aufrufer, der den Bindungsvorgang initiiert hat. Eine Partei kann einen Schnittstellenzeiger unter einer Zeichenfolge speichern, die beiden Parteien bekannt ist, sodass die andere Partei ihn später aus dem Bindungskontext abrufen kann.

Bindungsvorgänge nach der Verwendung dieser Methode können IBindCtx::GetObjectParam verwenden, um den gespeicherten Zeiger abzurufen.

Hinweise für Anrufer

RegisterObjectParam ist nützlich für diejenigen, die eine neue Monikerklasse (über eine Implementierung von IMoniker) implementieren, und für Monikerclients (diejenigen, die Moniker zum Binden an Objekte verwenden).

Beim Implementieren einer neuen Monikerklasse rufen Sie diese Methode auf, wenn während der Monikerbindung ein Fehler auftritt, um den Aufrufer über die Fehlerursache zu informieren. Der Schlüssel, den Sie bei einem Aufruf dieser Methode erhalten würden, hängt von der Fehlerbedingung ab. Im Folgenden finden Sie eine Liste mit häufigen Monikerbindungsfehlern, in denen für jeden schlüssel beschrieben wird, der geeignet wäre:

  • MK_E_EXCEEDEDDEADLINE: Wenn ein Bindungsvorgang seinen Stichtag überschreitet, weil ein bestimmtes Objekt nicht ausgeführt wird, sollten Sie den Moniker des Objekts mit dem ersten nicht verwendeten Schlüssel aus der Liste registrieren: "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2" usw. Wenn der Aufrufer später den Moniker in der ausgeführten Objekttabelle findet, kann der Aufrufer den Bindungsvorgang wiederholen.
  • MK_E_CONNECTMANUALLY: Der Schlüssel "ConnectManually" gibt einen Moniker an, dessen Bindung die Unterstützung des Endbenutzers erfordert. Um anzufordern, dass der Endbenutzer manuell eine Verbindung mit dem Objekt herstellt, kann der Aufrufer den Bindungsvorgang wiederholen, nachdem er den Anzeigenamen des Monikers angezeigt hat. Häufige Gründe für diesen Fehler sind, dass ein Kennwort erforderlich ist oder dass eine Diskette bereitgestellt werden muss.
  • E_CLASSNOTFOUND: Der Schlüssel "ClassNotFound" gibt einen Moniker an, dessen Klasse nicht gefunden werden konnte. (Der Server für das durch diesen Moniker identifizierte Objekt konnte nicht gefunden werden.) Wenn dieser Schlüssel für ein OLE-Verbunddokumentobjekt verwendet wird, kann der Aufrufer IMoniker::BindToStorage zum Binden an das Objekt verwenden und dann versuchen, einen Treat As...- oder Convert To... -Vorgang auszuführen, um das Objekt einem anderen Server zuzuordnen. Wenn dies erfolgreich ist, kann der Aufrufer den Bindungsvorgang wiederholen.
Ein Monikerclient mit detaillierten Kenntnissen über die Implementierung des Monikers kann diese Methode auch aufrufen, um private Informationen an diese Implementierung zu übergeben.

Sie können neue Zeichenfolgen als Schlüssel zum Speichern von Zeigern definieren. Gemäß der Konvention sollten Sie Schlüsselnamen verwenden, die mit der Zeichenfolgenform der CLSID der Monikerklasse beginnen. (Weitere Informationen finden Sie in der StringFromCLSID-Funktion .)

Wenn der pszKey-Parameter mit dem Namen eines vorhandenen Schlüssels in der Tabelle des Bindungskontexts übereinstimmt, ersetzt das neue Objekt das vorhandene Objekt in der Tabelle.

Wenn Sie ein Objekt mit dieser Methode registrieren, wird das Objekt erst freigegeben, wenn eine der folgenden Aktionen auftritt:

  • Sie wird in der Tabelle durch ein anderes Objekt mit demselben Schlüssel ersetzt.
  • Sie wird durch einen Aufruf von IBindCtx::RevokeObjectParam aus der Tabelle entfernt.
  • Der Bindungskontext wird freigegeben. Alle registrierten Objekte werden freigegeben, wenn der Bindungskontext freigegeben wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Ibindctx