Win32 API 日本語リファレンス
ホームMedia.KernelStreaming › IKsPropertySet

IKsPropertySet

COM
IID31efac30-515c-11d0-a9aa-00aa0061be93継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IKsPropertySet インターフェイスは、もともと WDM ドライバー上でデバイスのプロパティを効率的に設定および取得する手段として設計されました。KSProxy を使用して、ユーザーモードの COM メソッド呼び出しを、WDM ストリーミングクラスドライバーが使用するカーネルモードのプロパティセットに変換します。現在、このインターフェイスはソフトウェアコンポーネント間だけで情報を受け渡すためにも使用されます。場合によっては、ソフトウェアコンポーネントはこのインターフェイスか、または IKsControl インターフェイス(DirectShow DDK に記載)のいずれかを実装しなければなりません。たとえば、DVD ナビゲーターと共に使用するソフトウェア MPEG-2 デコーダーを作成する場合、これらのインターフェイスのいずれかを実装し、さらにナビゲーターがデコーダーに送信する DVD 関連のプロパティセットをサポートする必要があります。ピンはこれらのインターフェイスのいずれかをサポートすることで、他のピンやフィルターが自身のプロパティを設定または取得できるようにできます。注意 この名前のインターフェイスは dsound.h ヘッダーファイルにも別途存在します。これら 2 つのインターフェイスには互換性がありません。DirectShow DDK に記載されている IKsControl インターフェイスが、現在では WDM ドライバーとユーザーモードコンポーネント間でプロパティセットを受け渡すための推奨インターフェイスです。

解説(Remarks)

[このページに関連する機能である DirectShow は、レガシー機能です。これは MediaPlayerIMFMediaEngine、および Media Foundation でのオーディオ/ビデオキャプチャ に置き換えられました。これらの機能は Windows 10 および Windows 11 向けに最適化されています。Microsoft は、可能な限り新しいコードでは DirectShow ではなく MediaPlayerIMFMediaEngine、および Media Foundation でのオーディオ/ビデオキャプチャ を使用することを強く推奨します。また、レガシー API を使用している既存のコードについても、可能であれば新しい API を使用するように書き直すことを推奨します。]

IKsPropertySet インターフェイスは、もともと WDM ドライバー上でデバイスのプロパティを効率的に設定および取得する手段として設計されました。KSProxy を使用して、ユーザーモードの COM メソッド呼び出しを、WDM ストリーミングクラスドライバーが使用するカーネルモードのプロパティセットに変換します。現在、このインターフェイスはソフトウェアコンポーネント間だけで情報を受け渡すためにも使用されます。

場合によっては、ソフトウェアコンポーネントはこのインターフェイスか、または IKsControl インターフェイス(DirectShow DDK に記載)のいずれかを実装しなければなりません。たとえば、DVD ナビゲーターと共に使用するソフトウェア MPEG-2 デコーダーを作成する場合、これらのインターフェイスのいずれかを実装し、さらにナビゲーターがデコーダーに送信する DVD 関連のプロパティセットをサポートする必要があります。ピンはこれらのインターフェイスのいずれかをサポートすることで、他のピンやフィルターが自身のプロパティを設定または取得できるようにできます。

メモ

この名前のインターフェイスは dsound.h ヘッダーファイルにも別途存在します。これら 2 つのインターフェイスには互換性がありません。DirectShow DDK に記載されている IKsControl インターフェイスが、現在では WDM ドライバーとユーザーモードコンポーネント間でプロパティセットを受け渡すための推奨インターフェイスです。

Ksproxy.h の前に Ks.h をインクルードする必要があります。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Set(GUID* guidPropSet, DWORD dwPropID, void* pInstanceData, DWORD cbInstanceData, void* pPropData, DWORD cbPropData)

プロパティセット GUID とプロパティ ID で識別されるプロパティを設定します。

guidPropSetGUID*inプロパティセットを識別する GUID へのポインタを指定する。
dwPropIDDWORDinプロパティセット内のプロパティを識別する ID を指定する。
pInstanceDatavoid*inプロパティを限定するインスタンスデータへのポインタを指定する。不要なら NULL。
cbInstanceDataDWORDinpInstanceData のバイト数を指定する。
pPropDatavoid*in設定する値を保持するバッファへのポインタを指定する。
cbPropDataDWORDinpPropData のバイト数を指定する。
vtbl 4 HRESULT Get(GUID* guidPropSet, DWORD dwPropID, void* pInstanceData, DWORD cbInstanceData, void* pPropData, DWORD cbPropData, DWORD* pcbReturned)

プロパティセット GUID とプロパティ ID で識別されるプロパティを取得します。

guidPropSetGUID*inプロパティセットを識別する GUID へのポインタを指定する。
dwPropIDDWORDinプロパティセット内のプロパティを識別する ID を指定する。
pInstanceDatavoid*inプロパティを限定するインスタンスデータへのポインタを指定する。不要なら NULL。
cbInstanceDataDWORDinpInstanceData のバイト数を指定する。
pPropDatavoid*out取得した値を受け取るバッファへのポインタを指定する。
cbPropDataDWORDinpPropData のバイト数を指定する。
pcbReturnedDWORD*out実際に書き込まれたバイト数を受け取る DWORD ポインタ。
vtbl 5 HRESULT QuerySupported(GUID* guidPropSet, DWORD dwPropID, DWORD* pTypeSupport)

オブジェクトが指定されたプロパティセットをサポートしているかどうかを判定します。

guidPropSetGUID*inサポート状況を問い合わせるプロパティセットの GUID へのポインタを指定する。
dwPropIDDWORDinサポート状況を問い合わせるプロパティの ID を指定する。
pTypeSupportDWORD*outGet/Set 等の対応種別(KSPROPERTY_SUPPORT_*)を受け取る DWORD ポインタ。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IKsPropertySet "{31EFAC30-515C-11D0-A9AA-00AA0061BE93}"
#usecom global IKsPropertySet IID_IKsPropertySet "{}"
#comfunc global IKsPropertySet_Set             3 var,int,sptr,int,sptr,int
#comfunc global IKsPropertySet_Get             4 var,int,sptr,int,sptr,int,var
#comfunc global IKsPropertySet_QuerySupported  5 var,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。