Windows 7 における Protected User Mode Audio (PUMA)更新日: 2009 年 4 月 28 日 ダウンロードPDC08_CA_PUMA_JPN.doc (Word 形式、70 KB) 目次:
Kristin Carr 対象:Microsoft® Windows® SDK (Core Audio API) 要約:Protected User Mode Audio (PUMA) の更新内容について説明します。PUMA は、保護された環境 (PE: Protected Environment) でのユーザー モードのオーディオ エンジンで、オーディオ処理とレンダリング向けの安全性の高い環境を提供します。 法的通知:このドキュメントは暫定版であり、このソフトウェアの最終的な製品版の発売時に実質的に変更されることがあります。 1. Protected User Mode AudioProtected User Mode Audio (PUMA) は、Windows Vista® で導入されました。PUMA は、保護された環境 (PE: Protected Environment) でのユーザー モードのオーディオ エンジンで、オーディオ処理とレンダリング向けの安全性の高い環境を提供します。PUMA では、許容できる出力のみを有効にでき、出力が無効の場合は確実に無効にします。PUMA の詳細については、「出力コンテンツの保護と Windows Vista」を参照してください。 PUMA は Windows® 7 で更新され、次の機能が追加されました。
ページのトップへ 2. HDCP ビットと SCMS ビットの設定信頼されたオーディオ ドライバーで使用される DRMRIGHTS 構造体は、KS オーディオ ピン、またはポート クラス ドライバーのストリーム オブジェクトに割り当てられる DRM コンテンツの権利を指定します。CopyProtect メンバーは、オーディオ コンテンツのコピーを防止する必要があるかどうかを示します。コンテンツのコピーが防止されている場合は、別のコンポーネントに渡したり、DRM システムによって認証されていない不揮発性記憶域メディアに保存したりすることは許可されません。 Windows® 7 では、CopyProtect の使用方法がさらに厳しくなりました。ドライバーでは、状態を "コピー不可" に設定することによって、保護の制御がオーディオ インターフェイスに設定されます。つまり、HDMI 出力の HDCP が設定され、S/PDIF 出力の SCMS が設定されます。S/PDIF インターフェイスの場合、L ビット、Cp ビット、およびカテゴリ コードの各ビットの組み合わせにより、IEC 60958 で定義されているとおりに "コピー不可" という SCMS 状態が示されていることがドライバーで検証されます。 Windows 7 には、"コピー不可" 設定をサポートするように変更されている、組み込みの HD オーディオ クラス ドライバーが付属しています。HD オーディオ クラス ドライバーの場合、L ビットおよびカテゴリ コードのビットは常に 0 にセットされます。また、WHQL Testing Agreement の Exhibit B が更新され、CopyProtect が設定された場合のドライバーの新しい想定動作と要件を反映しています。 ページのトップへ 3. 保護された環境外でコンテンツ保護メカニズムを有効にするPUMA は、保護された環境 (PE) では独立したプロセスに常駐します。Windows® Vista で PUMA によって提供されるオーディオ コンテンツ保護制御を使用する場合、メディア アプリケーションが PE 内に存在する必要があります。PE と相互作用できるのは Media Foundation API のみのため、コンテンツ保護制御は、Media Foundation API を使用してオーディオ コンテンツのストリーミングを行うアプリケーションに限定されます。 Windows 7 では、PUMA 出力信頼機関 (OTA) によって提供されるコンテンツ保護制御にあらゆるアプリケーションからアクセスでき、アプリケーションが PE 内に存在するかどうかや、オーディオ再生に Media Foundation API を使用しているかどうかは関係ありません。 ページのトップへ a. サンプル コード次のサンプル コードは、SCMS または HDCP コンテンツ保護制御をオーディオ エンドポイントに設定しているアプリケーションを示しています。このサンプルでは、アプリケーションでオーディオ コンテンツのストリーミングに DirectShow® を使用します。ただし、使用するオーディオ ストリーミング API は何でもかまいません。 このサンプル コードでは、次のインターフェイスを使用します。
メディア アプリケーションでは、次の処理を実行する必要があります。 1. 開発環境を設定します。
2. システムのすべてのエンドポイントを列挙し、エンドポイントのコレクションから必要なエンドポイントを選択します。デバイスを列挙する方法の詳細については、Core Audio API の SDK に関するドキュメントの「Enumerating Audio Devices」(英語)を参照してください。
3. 列挙処理から返されたエンドポイントへの IMMDevice ポインターで、IID_IBaseFilter をインターフェイス識別子として指定して IMMDevice::Activate を呼び出し、DirectShow COM オブジェクトを作成します。
4. デバイスによってアクティブになった COM オブジェクトを使用して、DirectShow フィルター グラフを構築します。この処理の詳細については、DirectShow SDK のドキュメントの「フィルター グラフの作成」を参照してください。 5. IID_IMFTrustedOutput をインターフェイス識別子として指定して IMMDevice::Activate を呼び出して、OTA オブジェクトを作成し、IMFTrustedOutput インターフェイスへのポインターを取得します。
6. IMFTrustedOutput インターフェイスを使用してストリームの保護ポリシーを設定します。 hr = pTrustedOutput ->SetPolicy(&pPolicy, nPolicy, &pbTicket, &cbTicket); このサンプル コードでは、pPolicy は、クライアントが実装するオブジェクトの IMFOutputPolicy インターフェイスへのポインターです。IMFTrustedOutput インターフェイスの詳細については、Media Foundation SDK に関するドキュメント (英語) を参照してください。 |
ページのトップへ