IBindCtx::RegisterObjectParam メソッド (objidl.h)
バインド コンテキストの文字列キー付きポインター テーブル内の文字列キーにオブジェクトを関連付けます。
構文
HRESULT RegisterObjectParam(
[in] LPOLESTR pszKey,
[in] IUnknown *punk
);
パラメーター
[in] pszKey
オブジェクトが登録されている バインド コンテキスト文字列キー 。 キー文字列の比較では、大文字と小文字が区別されます。
[in] punk
登録するオブジェクトの IUnknown インターフェイスへのポインター。
メソッドは、ポインターで AddRef を呼び出します。
戻り値
このメソッドは、E_OUTOFMEMORYおよびS_OK標準の戻り値を返すことができます。
注釈
バインド コンテキストは、それぞれ文字列キーに関連付けられたインターフェイス ポインターのテーブルを保持します。 これにより、モニカー実装とバインド操作を開始した呼び出し元との間の通信が可能になります。 一方のパーティは、後でバインド コンテキストから取得できるように、両方のパーティに認識されている文字列の下にインターフェイス ポインターを格納できます。
このメソッドの使用に続くバインディング操作では、 IBindCtx::GetObjectParam を使用して、格納されているポインターを取得できます。
呼び出し元へのメモ
RegisterObjectParam は、( IMoniker の実装を通じて) 新しいモニカー クラスを実装する人やモニカー クライアント (モニカーを使用してオブジェクトにバインドする人) に役立ちます。新しいモニカー クラスを実装する場合は、モニカー バインド中にエラーが発生したときにこのメソッドを呼び出して、エラーの原因を呼び出し元に通知します。 このメソッドの呼び出しで取得するキーは、エラー条件によって異なります。 一般的なモニカー バインド エラーの一覧を次に示します。適切な各キーについて説明します。
- MK_E_EXCEEDEDDEADLINE: 特定のオブジェクトが実行されていないためにバインド操作が期限を超えた場合は、リストの最初の未使用のキー "ExceededDeadline"、"ExceededDeadline1"、"ExceededDeadline2" などを使用して、オブジェクトのモニカーを登録する必要があります。 呼び出し元が後で実行中のオブジェクト テーブルでモニカーを見つけた場合、呼び出し元はバインド操作を再試行できます。
- MK_E_CONNECTMANUALLY: "ConnectManually" キーは、バインディングにエンド ユーザーからの支援が必要なモニカーを示します。 エンド ユーザーがオブジェクトに手動で接続するように要求するために、呼び出し元はモニカーの表示名を表示した後、バインド操作を再試行できます。 このエラーの一般的な理由は、パスワードが必要であるか、フロッピーをマウントする必要があるということです。
- E_CLASSNOTFOUND: "ClassNotFound" キーは、クラスが見つからなかったモニカーを示します。 (このモニカーによって識別されたオブジェクトのサーバーが見つかりませんでした。OLE 複合ドキュメント オブジェクトにこのキーを使用する場合、呼び出し元は IMoniker::BindToStorage を使用してオブジェクトにバインドし、オブジェクトを別のサーバーに関連付けるために 、Treat As.. . または Convert To... 操作を実行しようとします。 これが成功した場合、呼び出し元はバインド操作を再試行できます。
ポインターを格納するためのキーとして新しい文字列を定義できます。 慣例により、モニカー クラスの CLSID の文字列形式で始まるキー名を使用する必要があります。 ( StringFromCLSID 関数を参照してください)。
pszKey パラメーターがバインド コンテキストのテーブル内の既存のキーの名前と一致する場合、新しい オブジェクトはテーブル内の既存のオブジェクトを置き換えます。
このメソッドを使用してオブジェクトを登録すると、オブジェクトは次のいずれかが発生するまで解放されません。
- テーブル内の同じキーを持つ別のオブジェクトに置き換えられます。
- IBindCtx::RevokeObjectParam の呼び出しによってテーブルから削除されます。
- バインド コンテキストが解放されます。 登録されているすべてのオブジェクトは、バインド コンテキストが解放されると解放されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |