Microsoft DirectX 8.0 |
IKsPropertySet インターフェイスの本来の目的は、KSProxy を使用して、ユーザーモードの COM メソッド呼び出しを、WDM ストリーミング クラス ドライバが使用するカーネルモードの "プロパティ セット" に変換することによって、WDM ドライバ上のデバイス プロパティを効率よく設定および取得することである。現在では、このインターフェイスは、コンポーネント間で情報を正確にやり取りする目的にも使用する。場合によっては、コンポーネントでこのインターフェイスを実装する必要がある。たとえば、Microsoft® DVD ナビゲータに使用するソフトウェア MPEG-2 デコーダを作成する場合には、このインターフェイスを実装し、さらに、IKsPropertySet::Get メソッドおよび IKsPropertySet::Set メソッドを使用して、ナビゲータがデコーダに送る DVD 関連のプロパティ セットをサポートしなければならない。そのピンのプロパティをほかのピンまたはフィルタから設定または取得できるように、ピンでこのインターフェイスをサポートしてもよい。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを返す。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IKsPropertySet メソッド 説明 Set プロパティ セット GUID およびプロパティ ID で識別されるプロパティを設定する。 Get プロパティ セット GUID およびプロパティ ID で識別されるプロパティを取得する。 QuerySupported 特定のプロパティ セットがオブジェクトでサポートされているかどうかを判断する。
プロパティ セット GUID およびプロパティ ID で識別されるプロパティを取得する。
構文
HRESULT Get(
REFGUID guidPropSet,
DWORD dwPropID,
LPVOID pInstanceData,
DWORD cbInstanceData,
LPVOID pPropData,
DWORD cbPropData,
DWORD *pcbReturned
);
パラメータ
- guidPropSet
- [in] プロパティ セット GUID。
- dwPropID
- [in] プロパティ セット内でのプロパティの識別子。
- pInstanceData
- [out, size_is(cbInstanceData)] プロパティに対応するインスタンス データへのポインタ。
- cbInstanceData
- [in] pInstanceData が指すバッファに含まれるデータのバイト数。
- pPropData
- [out, size_is(cbPropData)] プロパティの値が入った取得されたバッファへのポインタ。
- cbPropData
- [in] pPropData が指すバッファに含まれるデータのバイト数。
- pcbReturned
- [out] pPropData が指すバッファに返されたデータのバイト数へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の Microsoft® DirectShow® の実装では、プロパティ セットがサポートされていない場合、E_PROP_SET_UNSUPPORTED を返す。また、指定されたプロパティ セットでそのプロパティ ID がサポートされていない場合には、E_PROP_ID_UNSUPPORTED を返す。
注意
プロパティを取得するには、このメソッドがデータを設定するバッファを割り当てること。必要なバッファ サイズを判断するには、pPropData に NULL、cbPropData に 0 を指定する。必要なバッファ サイズが pcbReturned に返される。
特定のプロパティ セットがオブジェクトでサポートされているかどうかを判断する。
構文
HRESULT QuerySupported(
REFGUID guidPropSet,
DWORD dwPropID,
DWORD *pTypeSupport
);
パラメータ
- guidPropSet
- [in] プロパティ セット GUID。
- dwPropID
- [in] プロパティ セット内でのプロパティの識別子。
- pTypeSupport
- [out] ドライバのサポートを示すフラグを示す値へのポインタ。サポートされるフラグは次のとおりである。
KSPROPERTY_SUPPORT_GET IKsPropertySet::Get メソッドを呼び出してプロパティを取得できる。 KSPROPERTY_SUPPORT_SET IKsPropertySet::Set メソッドを呼び出してプロパティを変更できる。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装が返す戻り値は次のとおりである。
E_NOTIMPL プロパティ セットがサポートされていない。 E_PROP_ID_UNSUPPORTED 指定されたプロパティ セットでそのプロパティ ID がサポートされていない。 E_PROP_SET_UNSUPPORTED プロパティ セットがサポートされていない。 S_OK 指定されたプロパティ セットとプロパティ ID の組み合わせがサポートされている。
プロパティ セット GUID およびプロパティ ID で識別されるプロパティを設定する。
構文
HRESULT Set(
REFGUID guidPropSet,
DWORD dwPropID,
LPVOID pInstanceData,
DWORD cbInstanceData,
LPVOID pPropData,
DWORD cbPropData
);
パラメータ
- guidPropSet
- [in] プロパティ セット GUID。
- dwPropID
- [in] プロパティ セット内でのプロパティの識別子。
- pInstanceData
- [out, size_is(cbInstanceData)] プロパティに対応するインスタンス データへのポインタ。
- cbInstanceData
- [in] pInstanceData が指すバッファに含まれるデータのバイト数。
- pPropData
- [out, size_is(cbPropData)] プロパティの値が入った取得されたバッファへのポインタ。
- cbPropData
- [in] pPropData が指すバッファに含まれるデータのバイト数。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
現在の DirectShow の実装は、プロパティ セットがサポートされていない場合、E_PROP_SET_UNSUPPORTED を返し、指定されたプロパティ セットでそのプロパティ ID がサポートされていない場合、E_PROP_ID_UNSUPPORTED を返す。