DRM 函式和介面
系統驅動程式元件 Drmk.sys 和 Portcls.sys 實作 DRM 函式和介面的集合,驅動程式會用來管理核心串流音訊內容的數位許可權。 Drmk.sys元件會實作數個DrmXxx函式,Portcls.sys實作一組 DRM 特定的PcXxx函式,以及IDrmPort 和 IDrmPort2介面。
下列 DRM 函式可供使用:
為系統提供驅動程式介面,其中包含處理受保護內容的函式清單。 DrmCreateContentMixed
建立 DRM 內容識別碼,以識別包含來自數個輸入資料流程之混合內容的 KS 音訊資料流程。 DrmDestroyContent
刪除 DRM 內容識別碼。 DrmForwardContentToDeviceObject
驗證驅動程式,並傳送系統指派給包含受保護內容的資料流程的 DRM 內容識別碼和內容許可權。 DrmForwardContentToFileObject
過時的函式。 DrmForwardContentToInterface
驗證驅動程式物件,並傳送系統指派給包含受保護內容的資料流程的 DRM 內容識別碼和內容許可權。 DrmGetContentRights
擷取系統指派給 DRM 內容識別碼的 DRM 內容許可權。 此清單中的函式會在標頭檔 Drmk.h 中宣告。 核心模式 DRMK 系統驅動程式Drmk.sys匯出這些函式的進入點。
在 Windows XP 和更新版本中,PortCls 系統驅動程式Portcls.sys會針對相同 DRM 函式集匯出一組不同的進入點。 PortCls 函式的名稱與上一個清單中的函式類似,不同之處在于它們會使用前置詞電腦,而不是 Drm:
PcForwardContentToDeviceObject
這些函式名稱會在標頭檔 Portcls.h 中宣告。 Portcls.sys中的進入點不只呼叫 Drmk.sys 中的對應函式。 PortCls 進入點只是為了方便起見而提供,讓已連線到Portcls.sys的音訊驅動程式不需要明確載入Drmk.sys。
在 Windows XP 和更新版本中,相同的函式集也會公開為 IDrmPort 和 IDrmPort2 介面中的方法:
IDrmPort2::ForwardContentToDeviceObject
IDrmPort::ForwardContentToFileObject
IDrmPort::ForwardContentToInterface
IDrmPort 和 IDrmPort2介面會在標頭檔 Portcls.h 中宣告,並在 Portcls.sys 中實作。 這些方法不只呼叫 Drmk.sys中的對應函式。 迷你埠驅動程式會查詢其埠驅動程式以取得 IDrmPortx 介面的參考。 使用 IDrmPortx 介面而不是對應的 DrmXxx 或 PcXxx 函式的優點是,驅動程式可以使用此查詢在執行時間判斷作業系統版本是否支援 DRM。 這可簡化撰寫單一驅動程式的工作,這些驅動程式可在支援 DRM 的較新版本和較舊版本的 Windows 中執行。 IDrmPort2 衍生自 IDrmPort ,並提供兩個額外的方法。
如果對應的迷你埠驅動程式支援 WaveCyclic 和 WavePci 埠驅動程式,則會使用 IDrmAudioStream 介面。 埠驅動程式會呼叫 IDrmAudioStream::SetContentId 方法,將 DRM 保護指派給音訊資料流程中的數位內容。
在標頭檔 Drmk.h 中定義的 DEFINE_DRMRIGHTS_DEFAULT 宏,會將 DRMRIGHTS 結構的成員初始化為其預設值。