IBindCtx::RegisterObjectParam 方法 (objidl.h)

在系結內容的字串索引鍵指標數據表中,建立物件與字串索引鍵的關聯。

語法

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

參數

[in] pszKey

正在註冊對象的 系結內容字串索引鍵 。 索引鍵字串比較會區分大小寫。

[in] punk

要註冊之物件的 IUnknown 介面指標。

方法會在指標上呼叫 AddRef

傳回值

這個方法可以傳回標準傳回值E_OUTOFMEMORY和S_OK。

備註

系結內容會維護介面指標的數據表,每個都與字串索引鍵相關聯。 這可啟用Moniker實作與起始系結作業之呼叫端之間的通訊。 一方可以將介面指標儲存在兩方已知的字串底下,讓另一方稍後可以從系結內容中擷取它。

使用此方法之後的系結作業可以使用 IBindCtx::GetObjectParam 來擷取儲存的指標。

來電者附註

RegisterObjectParam 對於透過 IMoniker) 實作來實作新的 Moniker 類別 (,以及使用 Moniker 系結至物件) 的 Moniker 用戶端 (實作 Moniker 類別很有用。

在實作新的Moniker類別時,您會在Moniker系結期間發生錯誤時呼叫這個方法,以通知呼叫端錯誤的原因。 您透過呼叫這個方法取得的索引鍵取決於錯誤狀況。 以下是常見的Moniker系結錯誤清單,描述適合的每個索引鍵:

  • MK_E_EXCEEDEDDEADLINE:如果系結作業因為指定的物件未執行而超過其期限,您應該使用清單中第一個未使用的索引鍵來註冊物件的Moniker:“ExceededDeadline”、“ExceededDeadline1”、“ExceededDeadline2” 等等。 如果呼叫端稍後會在執行中的對象數據表中找到Moniker,則呼叫端可以重試系結作業。
  • MK_E_CONNECTMANUALLY:「ConnectManually」 索引鍵表示系結需要使用者協助的 Moniker。 若要要求終端使用者手動聯機到物件,呼叫端可以在顯示Moniker的顯示名稱之後重試系結作業。 此錯誤的常見原因是需要密碼,或需要掛接磁碟。
  • E_CLASSNOTFOUND:「ClassNotFound」 索引鍵表示找不到其類別的 Moniker。 (無法找到此Moniker所識別物件的伺服器。) 如果此索引鍵用於 OLE 複合文件物件,則呼叫端可以使用 IMoniker::BindToStorage 系結至對象,然後嘗試執行 「處理方式... 」或 「轉換至...」 作業,將物件與不同的伺服器產生關聯。 如果成功,呼叫端可以重試系結作業。
具有Moniker實作詳細知識的Moniker用戶端也可以呼叫這個方法,將私用資訊傳遞給該實作。

您可以將新字串定義為儲存指標的索引鍵。 依照慣例,您應該使用以Moniker類別 CLSID 字串形式開頭的索引鍵名稱。 (請參閱 StringFromCLSID 函式.)

如果 pszKey 參數符合系結內容數據表中現有索引鍵的名稱,則新物件會取代數據表中的現有物件。

當您使用此方法註冊物件時,直到發生下列其中一項之後,才會釋放物件:

  • 它會在數據表中由另一個物件取代為相同的索引鍵。
  • 它會透過 呼叫 IBindCtx::RevokeObjectParam 從數據表中移除。
  • 系結內容已釋放。 釋放系結內容時,會釋放所有已註冊的物件。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IBindCtx