共用方式為


IKsDataTypeHandler 介面 (ksproxy.h)

IKsDataTypeHandler 介面提供方法,可執行媒體範例的選擇性前置處理和後置處理。 這個介面也可以傳回處理所需的額外數據流標頭資訊大小,並可以判斷特定媒體類型是否在指定的核心串流數據範圍內。

這個介面的 IID 是IID_IKsDataTypeHandler。

遺產

IKsDataTypeHandler 介面繼承自 IUnknown 介面

方法

IKsDataTypeHandler 介面具有這些方法。

 
IKsDataTypeHandler::KsCompleteIoOperation

KsCompleteIoOperation 方法會清除延伸標頭,並完成輸入和輸出 (I/O) 作業。
IKsDataTypeHandler::KsIsMediaTypeInRanges

KsIsMediaTypeInRanges 方法會驗證媒體類型是否在提供的數據範圍內。
IKsDataTypeHandler::KsPrepareIoOperation

KsPrepareIoOperation 方法會初始化擴充標頭,並準備 I/O 作業的媒體範例。
IKsDataTypeHandler::KsQueryExtendedSize

KsQueryExtendedSize 方法會擷取輸入和輸出作業所需的擴充標頭資訊。
IKsDataTypeHandler::KsSetMediaType

KsSetMediaType 方法會設定數據類型處理程式的媒體類型。

言論

為了保持 Proxy 資料類型中性,可以載入選擇性數據類型處理程式,以在傳遞至內核模式篩選時按摩數據流。 您應該將數據類型處理程式實作為至少支援 IKsDataTypeHandler 介面的 COM 伺服器。 數據類型處理程式可以選擇性地支援 IKsDataTypeCompletion 介面。

數據類型處理程式通常會在針腳連接過程中載入,並在連接中斷時卸除。 不過,數據型別處理程式有時會短暫地載入其他用途。 例如,如果應用程式使用 DirectShow 的 IAMStreamConfig::SetFormat 方法,應用程式可能會使用數據類型處理程式來完成傳送至 方法的部分媒體類型參數。

Proxy 會使用來自媒體類型的 GUID 做為 COM 伺服器類別,以判斷載入是否有任何數據類型處理程式。 只要數據類型處理程式在 Proxy 所尋找的預期 GUID 類別下註冊為 COM 伺服器,就會載入數據類型處理程式。 主要格式類型會先用來嘗試開啟數據類型處理程式 COM 伺服器,然後在開啟資料類型處理程式失敗時使用主要格式類型,後面接著子類型和格式規範。 如果有任何嘗試成功,Proxy 會查詢 IKsDataTypeHandler 介面,並呼叫 介面的 KsSetMediaType 方法,以建立與處理程式一起使用的目前媒體類型,以防處理程式支援許多類型。 如果找不到處理程式,則 Proxy 會在封送處理串流到核心模式或執行任何其他必要工作時,假設沒有任何必要專案。

在數據類型處理程式上,透過 CoCreateInstance建立要求時,伺服器一律會顯示用來建立 COM 物件的外部 IUnknown。 這個 IUnknown 是載入此處理程式之 pin 物件上的介面。 IUnknown 介面指標可用來從釘選查詢資訊或介面,例如 IKsPinIKsControl 介面,不過在載入處理程式時可能尚未建立內核模式針腳。 透過取得任何介面,不應將任何參考留在外部物件上,因為它會導致循環參考計數。 使用不含參考計數的介面是可接受的,因為外部對象擁有處理程式,而且根據定義,當外部對象的參考計數達到零時,就會終結。

如需 IAMStreamConfig::SetFormat CoCreateInstance 的詳細資訊,請參閱 Microsoft Windows SDK 檔。

要求

要求 價值
目標平臺 窗戶
標頭 ksproxy.h

另請參閱

IKsDataTypeCompletion