IHolder::Close 方法 (comsvcs.h)

關閉持有者。

Syntax

HRESULT Close();

傳回值

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

這會關閉資源分配器的持有者,之後資源分配器可能會釋出。

在關閉之前,任何剩餘的清查會藉由呼叫資源分配器的 IDispenserDriver::D estroyResource 方法來終結。

下列順序描述如何關閉資源分配器:

  1. 取得資源分配器的參考, (公開 IDispenserDriver) 的物件。
  2. 在資源分配器中呼叫方法,其實作會呼叫 IHolder::Close
  3. IHolder::Close 會透過回呼資源分配器的 IDispenserDriver::D estroyResource 方法來終結任何剩餘的清查。
  4. IHolder::Close 會呼叫分配器管理員,從持有者清單中移除此持有者。 (如果未保留任何持有者,則分配器管理員對象會刪除本身。)
  5. IHolder::Close 會釋放其資源分配器的 IDispenserDriver 介面參考。 這是您在步驟 1 中需要參考的原因;否則,資源分配器會提前刪除本身,才能完成後續步驟。
  6. IHolder::Close 會返回資源分配器。
  7. 資源分配器會呼叫 IDispenserDriver::D estroyResource。 持有者現在會自行刪除。
  8. 步驟 2 中呼叫的方法現在會傳回。
  9. 釋放資源分配器的最終參考,現在會刪除它本身。
請注意,IDispenserManager::RegisterDispenser 方法不會在其 pDispenserDriver 對象上呼叫 AddRef,但 IHolder::Close 會在 pDispenserDriver 上執行 Release。 這可能會導致資源分配器物件提前終結。 若要避免這種提前解構, IHolder::Close 的呼叫端必須保存 Resource Dispenser 對象的參考,如步驟 1 和 5 中所述。

規格需求

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

另請參閱

IDispenserDriver

IDispenserManager

IHolder