使用 ADSI 延伸模組重新流覽 COM 匯總規則
以下是 COM 匯總和 ADSI 延伸模組規則的簡短檢閱。
CreateInstance 方法會傳回 IUnknown 介面的指標,如下所示,該介面不會將任何函式呼叫委派給匯總工具。
IUnknown::QueryInterface 方法會傳回其支援的介面指標,以及不支援之介面的錯誤。
IUnknown::AddRef 方法會遞增匯總擴充物件本身的參考計數。
IUnkown::Release 方法會將匯總擴充物件本身的參考計數遞減,並在參考計數為 0 時終結本身。
擴充對象應該在 CreateInstance 方法的實作期間儲存匯總工具的 IUnknown 指標,例如m_pOuterUnknown。
擴充物件支援的所有介面,包括 IADsExtension,都應該繼承自 IUnknown,這會委派所有函式回傳給匯總工具。
- IUnknown::QueryInterface 呼叫 “m_pOuterUnknown-QueryInterface>”
- IUnknown::AddRef 呼叫 “m_pOuterUnknown-AddRef>”
- IUnkown::Release 呼叫 “m_pOuterUnknown-Release>”
擴充寫入器只要遵守標準 COM 匯總規則,就可以選擇他們偏好的任何內部實作。 請注意,擴充物件不需要做為獨立物件。 延伸模組的設計目的是要以匯總的形式運作。 不過,擴充功能可以同時以獨立對象和匯總的形式運作。
除了標準 COM 匯總支援之外,擴充物件可能支援 IADsExtension 以取得更進階的功能。 如果支援晚期系結,擴充功能應該:
- 將 IDispatch 的函式委派回匯總工具。
- 在 IADsExtension 中實作 IDispatch 介面。