DrmForwardContentToDeviceObject 関数 (drmk.h)
DrmForwardContentToDeviceObject
関数は、呼び出し元が保護されたコンテンツを転送するデバイスを表すデバイス オブジェクトを受け入れます。 この関数はデバイスを認証し、システムが保護されたコンテンツに割り当てたコンテンツ ID と DRM 権限を送信します。
構文
NTSTATUS DrmForwardContentToDeviceObject(
[in] ULONG ContentId,
[in, optional] PVOID Reserved,
[in] PCDRMFORWARD DrmForward
);
パラメーター
[in] ContentId
DRM コンテンツ ID を指定します。 このパラメーターは、保護された KS オーディオ ストリームを識別します。
[in, optional] Reserved
将来の使用のために予約されています。 NULL に設定します。
[in] DrmForward
ターゲット デバイスを識別するデバイス オブジェクトとファイル オブジェクトと、そのデバイス上の KS オーディオ ピンをそれぞれ指定する、DRMFORWARD 構造体へのポインター。 構造体には、KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDset-property 要求がデバイスに渡すコンテキスト値も含まれています。
戻り値
DrmForwardContentToDeviceObject
は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー コードが返されます。
備考
保護されたコンテンツがデータ パスを通過することを許可する前に、システムはデータ パスがセキュリティで保護されていることを確認します。 これを行うために、システムは、データ パスの上流端から下流に移動するデータ パス内の各モジュールを認証します。 各モジュールが認証されると、そのモジュールはデータ パス内の次のモジュールに関するシステム情報を提供して、認証もできるようにします。 正常に認証するには、モジュールのバイナリ ファイルに DRM 準拠として署名する必要があります。
データ パス内の 2 つの隣接するモジュールは、いくつかの方法のいずれかで相互に通信できます。 アップストリーム モジュールが IoCallDriver を介してダウンストリーム モジュール呼び出す場合、ダウンストリーム モジュールは WDM ドライバーの一部になります。 この場合、アップストリーム モジュールは DrmForwardContentToDeviceObject
関数を呼び出して、ダウンストリーム モジュールを表すデバイス オブジェクトをシステムに提供します。 (2 つのモジュールがダウンストリーム モジュールの COM インターフェイスまたはコンテンツ ハンドラーを介して通信する場合、アップストリーム モジュールは代わりに DrmForwardContentToInterface または DrmAddContentHandlers 呼び出します)。
呼び出し元は、DeviceObject、FileObject、および DrmForward パラメーターが指す DRMFORWARD 構造体のコンテキスト メンバーを入力します。
DrmForwardContentToDeviceObject
では、次の値を使用します。
-
DeviceObject は、ドライバー (ダウンストリーム モジュール) を表すデバイス オブジェクトを指定します。
DrmForwardContentToDeviceObject
は、デバイス オブジェクトを使用してドライバーを認証します。 成功した場合、この関数は、set-property 要求をデバイス上の KS ピンに送信することで、デバイスの KSPROPERTY_DRMAUDIOSTREAM_CONTENTID プロパティを設定します。 -
FileObject は、プロパティ要求を送信する KS ピン
DrmForwardContentToDeviceObject
指定します。 -
Context は、呼び出し元がプロパティ要求を通じてドライバーに渡すコンテキスト値を指定します。
DrmForwardContentToDeviceObject
は、要求のプロパティ記述子にコンテキスト値をコピーします。 通常、コンテキスト値は、呼び出し元とドライバーの両方が理解するカスタム形式のデータを含むバッファーへのポインターです。 規則により、ダウンストリーム モジュールが KS フィルターの場合、Context メンバーは、DrmForwardContentToDeviceObject
関数がプロパティ要求を送信する KS ピンを指定するファイル オブジェクトを指します。 つまり、Context メンバーは、FileObject メンバーと同じファイル オブジェクトを指します。 USB オーディオ ドライバーは、コンテキスト パラメーターをUSBD_PIPE_HANDLE値に設定する必要があります。
DrmForwardContentToDeviceObject
は、これらの値を要求のプロパティ値にコピーします。
DrmForwardContentToDeviceObject
は、戻った後にデバイス オブジェクトをこれ以上使用しません。
DrmForwardContentToDeviceObject
は、PcForwardContentToDeviceObject および IDrmPort2::ForwardContentToDeviceObject と同じ機能を実行します。 詳細については、「DRM 関数とインターフェイスの」を参照してください。
KSPROPERTY_DRMAUDIOSTREAM_CONTENTID プロパティは、DRM コンテンツ ID と DRM コンテンツ権限を KS オーディオ ピンに割り当てます。
使用状況の概要テーブル
取得 | セット | ターゲット | プロパティ記述子の種類 | プロパティ値の型 |
---|---|---|---|---|
いいえ | はい | ピン |
プロパティ値 (操作データ) は、ストリームの DRM コンテンツ ID と DRM コンテンツ権限を指定するKSDRMAUDIOSTREAM_CONTENTID構造体です。
戻り値
KSPROPERTY_DRMAUDIOSTREAM_CONTENTID プロパティ要求は、次の表に示すように、KS フィルターが指定した DRM コンテンツ権限を適用できるかどうかを示す状態コードを返します。状態コード | 意味 |
---|---|
STATUS_SUCCESS | KS オーディオ フィルターは、指定された DRM コンテンツ権限を適用します。 |
STATUS_NOT_IMPLEMENTED | KS フィルターは、指定された DRM コンテンツ権限を適用できません。 |
DrmForwardContentToDeviceObject 関数は、このプロパティを使用して、プロパティ要求のターゲットである KS ピンを入力するオーディオ ストリームの DRM コンテンツ ID とコンテンツ権限を設定します。
KS オーディオ フィルターは、このプロパティ要求を同期的に処理します。 要求がSTATUS_SUCCESS返された場合、ターゲット KS オーディオ ピンのすべてのダウンストリーム KS オーディオ ノード (オーディオ トポロジ ノードを参照) も、指定された DRM コンテンツ ID と DRM コンテンツ権限で正常に構成されました。 (ダウンストリーム ノードは、オーディオ ピンを通過するオーディオ コンテンツの直接的または間接的なシンクであることに注意してください)。
DRM システムは、KS オーディオ ピンを表すファイル オブジェクトの有効期間中に、いつでもこのプロパティを設定できます。 要求が成功しない場合、以前に設定した DRM コンテンツ ID と DRM コンテンツ権限は、KS オーディオ ストリームで引き続き有効になります。
KSPROPERTY_DRMAUDIOSTREAM_CONTENTID プロパティのハンドラーは、プロパティ要求 IRP がカーネル モードで発生していることを確認する必要があります (つまり、IRP の RequestorMode フィールドが KernelMode 等しいことを確認します)。 IRP がユーザー モードで発生した場合、ハンドラーは IRP に失敗し、状態コードINVALID_DEVICE_REQUESTを返す必要があります。
DrmForwardContentToDeviceObject は、DRMK システム ドライバー、Drmk.sysのエントリ ポイントです。 DRMK は、IRQL PASSIVE_LEVELで KSPROPERTY_DRMAUDIOSTREAM_CONTENTID プロパティのIOCTL_KS_PROPERTY要求を送信します。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | drmk.h (Drmk.h を含む) |
ライブラリ | Drmk.lib |
IRQL | PASSIVE_LEVEL |
関連項目
DRMFORWARD を する
DrmAddContentHandlers を する
DrmForwardContentToInterface を する
IDrmPort2::ForwardContentToDeviceObject
IoCallDriver の