Microsoft DirectX 8.0 (C++) |
サウンド カード上の拡張プロパティを利用するには、最初にそのドライバが 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 を使うことはほとんどない。