使用限制欄位

注意

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

 

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

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

註冊和列舉

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

根據預設,向這個旗標注冊的 MFT 會從列舉結果中排除。 若要使用欄位限制列舉 MFT,請呼叫MFTEnumEx並在Flags參數中指定MFT_ENUM_FLAG_FIELDOFUSE旗標。 下圖說明此程序。

diagram showing mft and an application sending data to the registry

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

解除鎖定 MFT

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

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

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

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

 

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

diagram showing an application, activation object and mft with arrows to an fou object, which has an arrow back to mft

媒體基礎轉換