ミニポート ドライバー プロパティの項目要求
このセクションでは、DirectMusic プロパティ項目の要求について簡単に説明します。 この概念とその他のカーネル ストリーミングの概念の完全な概要については、カーネル ストリーミングを参照してください。
DirectMusic ミニポート ドライバーは、オーディオ ドライバーのプロパティ セットを処理する必要があります。 プロパティ要求は 2 つの部分で構成されます。 最初の部分は、KSPROPERTY 構造体によって定義されるプロパティ セットです。 2 つ目は、プロパティ項目に固有のインスタンス データを含むデータ バッファーです。
KSPROPERTY 構造には次のものが含まれます。
セットを指定する定義済みの GUID (KSPROP 標準版 TID_Synth_Dls など)。
セット内のプロパティ項目を指定する項目 ID (KSPROPERTY_SYNTH_DLS_DOWNLOAD など)。
要求された操作を指定するフラグ。
KSPROPERTY の Flags メンバーには、ミニポート ドライバーの要求された操作を指定する次のフラグのいずれかを正確に含める場合があります。
KSPROPERTY_TYPE_GET
指定されたプロパティ 項目の値を取得します。
KSPROPERTY_TYPE_SET
指定されたプロパティ項目の値を設定します。
KSPROPERTY_TYPE_BASICSUPPORT
プロパティ セットで使用できるサポートの種類を決定します。 *pvPropertyData で返されるデータは、KSPROPERTY_TYPE_GETと KSPROPERTY_TYPE_SETの一方または両方を含む DWORD であり、可能な操作を示します。
プロパティ項目要求の 2 番目の部分は、ミニポート ドライバーとの間でデータを渡すために使用できるバッファーであるインスタンス データです。 このバッファーの使用方法は、要求が SET か GET かによって異なります。
要求が KSPROPERTY_TYPE_SET の場合、インスタンス データはミニポート ドライバーに送信されますが、要求元には返されません。
要求がKSPROPERTY_TYPE_GETの場合、インスタンス データはミニポート ドライバーに入力され、要求元に返されます。
プロパティ項目要求は、ミニポート ドライバー トポロジ内の特定のノードに送信できます。 ミニポート ドライバー トポロジは、ドライバーと基になるハードウェアのレイアウトを記述します。 トポロジ内には、要求時に使用可能なピン インスタンスがあるかどうかに関係なく、プロパティ項目を送信できるノードを指定できます。
DirectMusic 再生用にピン インスタンスを作成する必要があります。 DirectMusic データは、KSNODETYPE_DMSYNTH 型のノードに送信されます。 以下は、ミニポート ドライバーの接続の例です。
ストリームをシンセに接続する:
PCFILTER_NODE ピン 0 (出力) -> ノード 0 ピン 1 (入力)
オーディオアウトにシンセを接続します:
ノード 0 ピン 0 (出力) -> PCFILTER_NODE ピン 1 (入力)
サポートされているデータ形式は、ピンでデータを受信できる形式を指定するデータ範囲です。
DirectMusic 形式 (STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC) は、DirectMusic がミニポート ドライバーにデータを送信できるように、ミニポート ドライバーのトポロジで定義する必要があります。 この形式は、dmusbuff.h のDMUS_EVENTHEADER構造 (Microsoft Windows SDK のドキュメントを参照) によって定義されます。 ミニポート ドライバーは、この特定のデータ範囲をサポートすることを指定すると、DirectMusic は(ポート自体のピンを介して) ユーザーにそのデータ範囲を公開できます。