使用限制的欄位
注意
本主題適用于 Windows 7 或更新版本。
使用領域限制是一項布建,可限制如何使用特定技術的授權。
媒體基礎提供一種機制,可強制執行媒體基礎轉換的欄位使用限制, (MFT) ,特別是編解碼器。 此機制需要 MFT 封鎖應用程式本身的使用,直到應用程式與 MFT 執行交握為止。 媒體基礎不會定義交握,通常涉及某種密碼編譯交換。
註冊和列舉
如果 MFT 具有使用欄位限制,請在註冊 MFT 時設定 MFT_ENUM_FLAG_FIELDOFUSE 旗標。 此旗標適用于下列 MFT 註冊 API:
根據預設,向這個旗標注冊的 MFT 會從列舉結果中排除。 若要列舉具有使用欄位限制的 MFT,請呼叫MFTEnumEx,並在Flags參數中指定MFT_ENUM_FLAG_FIELDOFUSE旗標。 下圖說明此程序。
MFTEnum函式一律會排除任何具有使用欄位限制的 MFT。
解除鎖定 MFT
若要搭配使用欄位限制使用 MFT,請執行下列步驟:
- 應用程式會實作 IMFFieldOfUseMFTUnlock 介面。
- IMFFieldOfUseMFTUnlock::Unlock方法會取得 MFT之 IUnknown介面的指標。
- 在 Unlock 方法中,應用程式會使用 MFT 所定義的任何機制來執行必要的交握。 此步驟不是由媒體基礎 API 所定義。
- 如果 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 介面之間的關聯性。
相關主題