開發和偵錯 DRM 驅動程式
下列檢查清單可協助驅動程式寫入器避免一些常見的陷阱:
如果驅動程式在 DRM 保護的內容播放時停用波浪擷取和 S/PDIF 輸出,則驅動程式應該記得在 DRM 保護的內容完成播放 (之後再次啟用它們,而且 DRM 緩衝區會終結) 。
如果裝置執行硬體混合,驅動程式應該追蹤在將串流新增至混合或從混合中移除串流時所發生的複合使用權變更。 每當混合包含一或多個受禁止複製的 DRM 資料流程時,應該將擷取設為靜音。 當受保護的混合現正播放時,如果擷取開啟,它應該保持靜音。
變更篩選圖形或與資料流程相關聯的屬性設定之後,驅動程式可能需要立即更新資料流程的禁止複製和輸出啟用設定。 驅動程式應該同步處理其作業,以防止受保護的內容複製到擷取緩衝區或數位輸出。 例如,當輸入資料流程變更擷取多工器時,驅動程式不應允許安全內容在開啟和關閉靜音時變得容易遭受攻擊。
DRMK 系統驅動程式可防止核心偵錯工具在 DRM 保護的內容現正播放時連線。 反偵錯防護是 DRMK 用來讓受保護的內容不透明之一的數個量值之一。 不過,一旦驅動程式準備好進行測試,您可以使用下列技術來偵錯其 DRM 相容功能:
例如,暫時修改波浪資料流程的 SetState 方法 (,請參閱 IMiniportWavePciStream::SetState) 呼叫 IDrmAudioStream::SetContentId ,並將 DRMRIGHTS 參數的 CopyProtect 成員設定為 TRUE。
完成偵錯之後,請記得移除 SetContentId 呼叫。
透過這項技術,您可以播放未受保護的內容,就像它是 DRM 保護的內容,但避免停用偵錯工具。
例如,您可以使用偵錯工具來確認驅動程式不會記錄內容。 嘗試藉由變更 SndVol32 程式的音量和靜音設定,透過擷取 MUX 來嘗試讓驅動程式能夠透過擷取 MUX 來錄製波浪資料流程。 滑杆應該反映您對其設定所做的變更,這是持續性的,但擷取 MUX 應該會繼續將波浪流靜音,直到「受保護的」內容播放完成為止。 只有新的設定才會生效。