drmForwardContentToInterface 函式 (drmk.h)

DrmForwardContentToInterface 式會接受呼叫端想要轉送受保護內容之物件的 COM 介面指標。 函式會驗證物件,並將系統指派給受保護內容的內容標識碼和DRM許可權傳送物件。

語法

NTSTATUS DrmForwardContentToInterface(
  [in] ULONG    ContentId,
  [in] PUNKNOWN pUnknown,
  [in] ULONG    NumMethods
);

參數

[in] ContentId

指定DRM內容識別碼。 此參數會識別受保護的 KS 音訊數據流。

[in] pUnknown

直接接收 KS 音訊篩選之 KS 音訊數據流數據的 COM 介面指標。

[in] NumMethods

指定 pUnknown 指向 COM 介面中的方法總數,包括其基底介面中的所有方法。

傳回值

DrmForwardContentToInterface 如果呼叫成功,會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。

傳回碼 Description
STATUS_NOT_IMPLEMENTED
表示與 pUnknown 相關聯的 KS 音訊數據流不支援指派給 ContentId 的DRM內容許可權。

備註

允許受保護的內容流經數據路徑之前,系統會驗證數據路徑是否安全。 若要這樣做,系統會從數據路徑的上游端開始驗證數據路徑中的每個模組,並移動下游。 當每個模組都經過驗證時,該模組會提供數據路徑中下一個模組的系統資訊,以便也可以進行驗證。 若要成功驗證,模組的二進位檔必須簽署為符合DRM規範。

如果數據路徑中的兩個相鄰模組透過下游模組的 COM 介面彼此通訊,上游模組會呼叫 DrmForwardContentToInterface 函式,以提供系統 COM 介面的指標。 (如果兩個模組透過 IoCallDriver函 式或下游模組的內容處理程式進行通訊,上游模組會改為呼叫 DrmForwardContentToDeviceObjectDrmAddContentHandlers 。)

DrmForwardContentToInterface 驗證模組,這個模組會在 pUnknown 所指向的 COM 介面中實作方法。 (如果方法分散在數個模組之間,函式會驗證所有這些modules.) 呼叫介面的模組和實作介面的模組都必須瞭解此廠商定義的介面。 DrmForwardContentToInterface 不會假設此介面衍生自 IUnknown 以外的介面。

如果 DrmForwardContentToInterface 成功驗證驅動程式或連結庫,它會執行下列動作:

  • 查詢 pUnknown 介面的 IDrmAudioStream 介面。 請注意,雖然會 DrmForwardContentToInterface 驗證 pUnknown 介面中的所有方法,但它不會呼叫 pUnknown 介面中除了基底 IUnknown 方法以外的任何方法。
  • 呼叫 IDrmAudioStream::SetContentId 來設定音訊數據流上的DRM內容識別碼和DRM內容許可權。 在傳回之前, DrmForwardContentToInterface 釋放 IDrmAudioStream 介面。
pUnknown 參數遵循 COM 對象的參考計數慣例

DrmForwardContentToInterface 會執行與 PcForwardContentToInterfaceIDrmPort::ForwardContentToInterface 相同的函式。 如需詳細資訊,請參閱 DRM函式和介面

規格需求

需求
目標平台 Universal
標頭 drmk.h (包含Drmk.h)
程式庫 Drmk.lib
IRQL PASSIVE_LEVEL

另請參閱

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream::SetContentId

IDrmPort::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface