Microsoft DirectX 8.0 (C++)

DirectSound バッファのプロパティ セット

サウンド カード上の拡張プロパティを利用するには、最初にそのドライバが IKsPropertySet インターフェイスをサポートしているかどうかを確認し、サポートしている場合はそのインターフェイスへのポインタを取得しなければならない。これを行うには、次のように、DirectSound3D バッファ オブジェクト上の既存のインターフェイスに対して QueryInterface メソッドを呼び出す。

HRESULT hr = lpDirectSound3DBuffer->QueryInterface(
        IID_IKsPropertySet,
        (void**)&lpKsPropertySet));

この例では、lpDirectSound3DBuffer はバッファのインターフェイスへのポインタであり、IKsPropertySet インターフェイスが見つかった場合は、lpKsPropertySet はそのアドレスを受け取る。IID_lpKsPropertySet は、Dsound.h 内で定義されている GUID である。

バッファがハードウェア アクセラレートされている場合に限り、この呼び出しは成功する。成功した場合は、IKsPropertySet::QuerySupport メソッドを使って特定のプロパティを検索できる。PropertySetId パラメータの値は、ハードウェア ベンダーによって定義された GUID である。

特定のプロパティに対するサポートが存在すると確認した後は、IKsPropertySet::Set メソッドによるプロパティの状態の変更と、IKsPropertySet::Get メソッドによる現在の状態の確認を行うことができる。pPropertyData パラメータを使って、プロパティの状態の設定と取得を行う。

IKsPropertySet::Set pPropertyParams パラメータが指す構造体内のオブジェクトに、追加のプロパティ パラメータを渡してもよい。このパラメータの正確な使用方法は、プロパティ セットに関するハードウェア ベンダーの仕様書で定義されるが、プロパティ セットのインスタンスを定義するために使われるのが普通である。実際には、pPropertyParams を使うことはほとんどない。