共用方式為


使用限制欄位

注意

本主題適用於 Windows 7 或更新版本。

 

使用領域 限制是一項規定,可限制如何使用特定技術的授權。

媒體基礎提供一種機制,可強制執行媒體基礎轉換(MFT)的欄位使用限制,特別是編解碼器。 此機制需要 MFT 封鎖應用程式本身的使用,直到應用程式與 MFT 執行交握為止。 媒體基礎不會定義交握,通常涉及某種密碼編譯交換。

註冊和列舉

如果 MFT 具有使用欄位限制,請在註冊 MFT 時設定 MFT_ENUM_FLAG_FIELDOFUSE 旗標。 此旗標適用於下列 MFT 註冊 API:

根據預設,以這個旗標註冊的 MFT 會從列舉結果中排除。 若要列舉具有使用範圍限制的 MFT,請呼叫 MFTEnumEx,並在 Flags 參數中指定 MFT_ENUM_FLAG_FIELDOFUSE 旗標。 下圖說明此程式。

顯示 mft 和應用程式將數據傳送至登錄圖表

MFTEnum 函式一律會排除任何具有使用欄位限制的 MFT。

解除鎖定 MFT

若要搭配使用欄位限制使用 MFT,請執行下列步驟:

  1. 應用程式會實作IMFFieldOfUseMFTUnlock介面
  2. IMFFieldOfUseMFTUnlock::Unlock 方法會取得 MFT IUnknown 介面的指標。
  3. Unlock 方法中,應用程式會使用 MFT 所定義的任何機制來執行必要的交握。 這個步驟不是由媒體基礎 API 所定義。
  4. 如果 Unlock 方法成功,MFT 就會自行解除鎖定。

應用程式會藉由設定 MFT_FIELDOFUSE_UNLOCK_Attribute 屬性來指定 imfFieldOfUseMFTUnlock指標。 根據應用程式建立譯碼器或編碼管線的方式,有數種不同的方式可設定此屬性:

應用程式介面 如何解除鎖定欄位-Of-Use
來源讀取器 如果您的應用程式使用 來源讀取器 譯碼媒體檔案,請在組態參數中設定 MFT_FIELDOFUSE_UNLOCK_Attribute 屬性。 請參閱 來源讀取器屬性
接收寫入器 如果您的應用程式使用接收寫入器來編碼媒體檔案,請在組態參數中設定 MFT_FIELDOFUSE_UNLOCK_Attribute 屬性。 請參閱 接收寫入器屬性。
快速轉碼 如果您的應用程式使用快速轉碼功能來建立編碼拓撲,請在呼叫IMFTranscodeProfile::SetContainerAttributes 時設定 MFT_FIELDOFUSE_UNLOCK_Attribute。 如需快速轉碼功能的詳細資訊,請參閱 Transcode API
拓撲學 如果您直接建立拓撲,請將 MFT_FIELDOFUSE_UNLOCK_Attribute 設定為拓撲上的屬性。 請參閱 拓撲屬性
MFT Activation 物件 如果您的應用程式直接列舉將使用的譯碼器或編碼器,請在 IMFActivateMFTEnumEx 函式所傳回的指標上設定 MFT_FIELDOFUSE_UNLOCK_Attribute
在呼叫IMFActivate::ActivateObject 之前設定 屬性,以建立 MFT。 啟用物件會在建立 MFT 時呼叫 IMFFieldOfUseMFTUnlock::Unlock

 

下圖顯示 MFT 啟用物件與 IMFFieldOfUseMFTUnlock 介面之間的關聯性。

圖表,顯示應用程式、啟用物件和 mft,其具有 fou 物件的箭號,其箭號可返回 mft

媒體基礎轉換