將DRM-Protected檔案轉換成適用于網路裝置串流的 Windows 媒體 DRM 10
註冊並驗證裝置之後,您就可以開始處理來自該裝置的授權要求訊息。 需要應用程式動作時,裝置會傳送授權要求訊息。 目前唯一支援的動作是「播放」,這是用於播放安全資料的要求。
當您收到授權要求訊息時,您應該執行下列步驟:
- 呼叫 IWMDRMMessageParser::P arseLicenseRequestMsg 方法來剖析授權要求訊息。
- 藉由呼叫IWMDeviceRegistration::GetRegisteredDeviceByID方法,傳入步驟 1 中取得的憑證和序號,以取得裝置的 IWMRegisteredDevice 介面。
- 確認裝置已準備好接收安全資料:
- 呼叫 IWMRegisteredDevice::IsApproved 以確認裝置已核准。 核准應一律以使用者喜好設定為基礎。
- 呼叫 IWMRegisteredDevice::IsValid 以確認裝置在過去 48 小時內已驗證。 如果裝置無效,您必須執行鄰近偵測。 如需詳細資訊,請參閱 執行鄰近偵測。
- 呼叫 IWMRegisteredDevice::IsOpened 以確認裝置已開啟。 如果裝置未開啟,您可以呼叫 IWMRegisteredDevice::Open來開啟它。 您一次只能在電腦上開啟 10 部裝置。 您可能必須先關閉另一個裝置,才能開啟正在處理要求的裝置。 若要關閉裝置,請呼叫 IWMRegisteredDevice::Close 方法。
- 呼叫 WMCreateDRMTranscryptor 函式,以建立 DRM Transcryptor 物件的實例。
- 呼叫 IWMDRMTranscryptor::Initialize 方法來初始化 transcryptor。 這個方法會採用 IWMStatusCallback 介面實作的指標,此介面會用來傳遞狀態訊息。 這個方法也會傳回必須傳送至裝置的授權要求訊息,才能繼續。
- 當應用程式的 IWMStatusCallback::OnStatus 方法收到WMT_TRANSCRYPTOR_INIT狀態訊息時,請呼叫 IWMDRMTranscryptor::Seek 方法來搜尋檔案中適當的開始位置。 若要從檔案的開頭開始,您必須使用時間 0 呼叫 Seek 。
- 當轉譯器準備好在新的簡報時間從檔案傳遞資料時,轉譯器會傳送WMT_TRANSCRYPTOR_SEEKED訊息。 對 IWMDRMTranscryptor::Read 方法進行重複呼叫,以取得已轉換的媒體資料區塊。 每個呼叫都是非同步,而且在收到WMT_TRANSCRYPTOR_READ訊息之前不會完成。 當您收到訊息時,您可以將資料傳送至接收裝置。
- 當您收到WMT_TRANSCRYPTOR_READ訊息, 並將 hr 參數設定為 NS_S_TRANSCRYPTOR_EOF 時,已讀取整個檔案。 此時,呼叫 IWMDRMTranscryptor::Close 方法來關閉檔案並釋放資源。
- 收到WMT_TRANSCRYPTOR_CLOSED訊息時,您可以釋放 IWMDRMTranscryptor 介面。
注意
此 SDK 的 x64 型版本不支援 DRM。
相關主題