IOleItemContainer::GetObject 方法 (oleidl.h)
擷取指定物件的指標。
語法
HRESULT GetObject(
[in] LPOLESTR pszItem,
[in] DWORD dwSpeedNeeded,
[in] IBindCtx *pbc,
[in] REFIID riid,
[out] void **ppvObject
);
參數
[in] pszItem
所要求物件的容器名稱。
[in] dwSpeedNeeded
表示呼叫端等候取得物件的時間長度。 可能的值取自列舉 BINDSPEED。
[in] pbc
系結內容物件上要用於這個系結作業之 IBindCtx 介面的指標。 系結內容會在系結程式期間快取系結的物件、包含使用系結內容套用至所有作業的參數,並提供系結實作應該擷取其環境相關信息的方法。
[in] riid
所要求介面指標標識碼的參考。
[out] ppvObject
接收 riid 中所要求之介面指標的指標變數位址。 成功傳回時,*ppvObject 包含 pszItem 所命名之物件的要求介面指標。 成功時,實作必須在 *ppvObject 上呼叫 AddRef;呼叫者必須負責呼叫 Release。 如果發生錯誤,實作會將 *ppvObject 設定為 NULL。
傳回值
這個方法可以傳回標準傳回值E_OUTOFMEMORY,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
系結作業無法在系結內容的 BIND_OPTS 結構所指定的時間限制內完成,或是使用 dwSpeedNeeded 參數所指示的速度完成。 |
|
參數 pszItem 不會識別此容器中的物件。 |
|
要求的介面無法使用。 |
備註
IMoniker::BindToObject 的專案Moniker實作會呼叫此方法,並將儲存在專案Moniker內的名稱傳遞為 pszItem 參數。
實作者的注意事項
您的 IOleItemContainer::GetObject 實作應該先判斷 pszItem 是否為其中一個容器物件的有效名稱。 如果沒有,您應該傳回MK_E_NOOBJECT。如果 pszItem 為內嵌或連結的物件命名,您的實作必須檢查 dwSpeedNeeded 參數的值。 如果值BINDSPEED_IMMEDIATE且尚未載入物件,您應該傳回MK_E_EXCEEDEDDEADLINE。 如果載入物件,您的實作應該藉由呼叫 OleIsRunning 函式) 來判斷物件是否執行 (。 如果未執行,且 dwSpeedNeeded 值BINDSPEED_MODERATE,您的實作應該會傳回MK_E_EXCEEDEDDEADLINE。 如果物件未執行且 dwSpeedNeeded BINDSPEED_INDEFINITE,您的實作應該呼叫 OleRun 函式,將物件置於執行中狀態。 然後,它可以查詢所要求介面的物件。 請注意,在查詢介面之前,請務必先執行 物件。
如果 pszItem 將虛擬物件命名為虛擬物件,則您的實作可以忽略 dwSpeedNeeded 參數,因為每當容器執行時,虛擬物件就會執行。 在此情況下,您的實作可以直接查詢要求的介面。
如果您需要有關 dwSpeedNeeded 所提供之時間限制的更具體資訊,您可以在變更參數上呼叫 IBindCtx::GetBindOptions 以取得實際的期限參數。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | oleidl.h |