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 方法會擷取輸入和輸出 (I/O) 作業所需的擴充標頭資訊。 |
IKsDataTypeHandler::KsSetMediaType KsSetMediaType 方法會設定數據類型處理程式的媒體類型。 |
備註
若要讓 Proxy 資料類型保持中性,選擇性數據類型處理程式可以載入,以在數據流傳入或傳回內核模式篩選時加以壓縮。 您應該將數據類型處理程式實作為至少支援 IKsDataTypeHandler 介面的 COM 伺服器。 數據類型處理程式可以選擇性地支援 IKsDataTypeCompletion 介面。
數據類型處理程式通常會在針腳連接程式期間載入,並在連接中斷時卸除。 不過,數據類型處理程式有時會短暫載入以供其他用途使用。 例如,如果應用程式使用 DirectShow 的 IAMStreamConfig::SetFormat 方法,應用程式可能會使用資料類型處理程式來完成傳送至 方法的部分媒體類型參數。
Proxy 會使用媒體類型的 GUID 做為 COM 伺服器類別,以判斷是否要載入的任何資料類型處理程式。 只要數據類型處理程式在 Proxy 所尋找的預期 GUID 類別下註冊為 COM 伺服器,就會載入數據類型處理程式。 如果開啟數據類型處理程序失敗,主要格式類型會先用來嘗試開啟數據類型處理程式 COM 伺服器,後面接著子類型和格式規範。如果開啟數據類型處理程式失敗,請使用主要格式類型。 如果有任何嘗試成功,Proxy 會查詢 IKsDataTypeHandler 介面,並呼叫介面的 KsSetMediaType 方法,以建立處理程式所使用的目前媒體類型,以防處理程式支援許多類型。 如果找不到任何處理程式,則 Proxy 會在封送處理串流至核心模式或執行任何其他必要工作時,假設不需要任何處理程式。
在數據類型處理程式上,透過 CoCreateInstance 建立要求時,伺服器一律會顯示外部 IUnknown ,用來建立 COM 物件。 這個 IUnknown 是載入此處理程式之 pin 物件上的介面。 IUnknown 介面指標可用來從針腳查詢資訊或介面,例如 IKsPin 或 IKsControl 介面,雖然在載入處理程式時可能尚未建立核心模式針腳。 外部物件上不應該透過取得任何介面留下任何參考,因為它會產生循環參考計數。 使用沒有參考計數的介面是可接受的,因為外部對象擁有處理程式,而且根據定義,當外部對象的參考計數達到零時就會終結。
如需 IAMStreamConfig::SetFormat 和 CoCreateInstance 的詳細資訊,請參閱 Microsoft Windows SDK 檔。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | ksproxy.h |