共用方式為


COM 物件的 Reference-Counting 慣例

音訊介面中的方法會遵循一組一般規則,以計算它們接受的 COM 對象參考做為輸入參數,或傳回做為輸出參數。 這些規則及其例外狀況摘要如下。 如需 COM 介面的詳細資訊,請參閱 Microsoft Windows SDK 檔的 COM 一節。

輸入參數的參考計數

呼叫一個接受物件 X 參考做為輸入參數的方法時,呼叫端必須在呼叫期間,保留自己對該物件的參考。 必須執行此行為,以確保方法的物件 X 指標在傳回之前仍然有效。 如果實作這個方法的物件 Y 必須保留這個方法傳回以外的物件 X 參考,方法應該先在物件 X 上呼叫 AddRef,再傳回。 當物件 Y 稍後使用物件 X 完成時,它應該在物件 X 上呼叫 Release

例如,IServiceGroup::AddMember 方法會在它新增至其服務群組的 IServiceSink 物件上呼叫 AddRef。 為了補充此行為, IServiceGroup::RemoveMember 方法會在從服務群組中移除的 IServiceSink 對象上呼叫 Release

輸出參數的參考計數

透過輸出參數將物件參考傳遞給呼叫端的方法,應該在方法返回之前(或在釋放其自身對物件的參考之前)呼叫 AddRef。 此行為是必要的,以確保呼叫端在呼叫返回時持有有效的參照。 呼叫端負責在完成使用物件後,呼叫 Release

例如, IMiniportWaveCyclic::NewStream 方法會在數據流、服務群組和 DMA 通道物件上呼叫 AddRef ,而該物件會輸出至呼叫端(WaveCyclic 埠驅動程式)。 呼叫端負責在不再需要這些參考時釋放這些參考。 如需顯示此行為的 IMiniportWaveCyclic::NewStream 方法實作,請參閱舊版 Microsoft windows 驅動程式套件 (WDK) 中的 Sb16 範例配接器。

規則的例外狀況

如需此方法在其 DmaChannel 輸出參數上執行的非常規參考計數描述,請參閱 IMiniportWavePci::NewStream