使用限制欄位
注意
本主題適用於 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,請執行下列步驟:
- 應用程式會實作IMFFieldOfUseMFTUnlock介面。
- IMFFieldOfUseMFTUnlock::Unlock 方法會取得 MFT IUnknown 介面的指標。
- 在 Unlock 方法中,應用程式會使用 MFT 所定義的任何機制來執行必要的交握。 這個步驟不是由媒體基礎 API 所定義。
- 如果 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 介面之間的關聯性。
相關主題