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

INSSBuffer3

COM
IIDc87ceaaf-75be-4bc4-84eb-ac2798507672継承元INSSBuffer2自前メソッド開始 vtbl10

公式ドキュメント

INSSBuffer3 インターフェイスは、サンプルの個々のプロパティを設定および取得する機能を追加することで、INSSBuffer インターフェイスを拡張します。

メソッド 2

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

vtbl 10 HRESULT SetProperty(GUID guidBufferProperty, void* pvBufferProperty, DWORD dwBufferPropertySize)

SetProperty メソッドは、バッファ内のサンプルに対してプロパティを指定するために使用します。バッファプロパティは、ASF ファイルの書き込み時に、サンプルとともに情報をライターオブジェクトへ渡すために使用されます。サンプルプロパティは GUID 値です。

guidBufferPropertyGUIDin設定するプロパティを識別する GUID 値です。定義済みのバッファプロパティについては、本ドキュメントの Sample Extension Types セクションで説明しています。独自の GUID 値を使用して、独自のサンプル拡張スキームを定義することもできます。
pvBufferPropertyvoid*inプロパティ値を格納したバッファへのポインターです。
dwBufferPropertySizeDWORDinpvBufferProperty が指すバッファのサイズを格納した DWORD 値です。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_OUTOFMEMORY
メソッドが新しいプロパティ用のメモリを割り当てられませんでした。

解説(Remarks)

IWMStreamConfig2::AddDataUnitExtension の呼び出しで指定したサイズよりも大きいサイズでバッファプロパティを設定しても、SetProperty からはエラーが返されません。ただし、ライターがサンプルを書き込む際に NS_E_DATA_UNIT_EXTENSION_TOO_LARGE が返されます。

vtbl 11 HRESULT GetProperty(GUID guidBufferProperty, void* pvBufferProperty, DWORD* pdwBufferPropertySize)

GetProperty メソッドは、バッファ内のサンプルのプロパティを取得するために使用します。バッファプロパティは、ASF ファイルの書き込み時に、サンプルとともに情報をライターオブジェクトへ渡すために使用されます。サンプルプロパティは GUID 値です。

guidBufferPropertyGUIDin取得するプロパティを識別する GUID 値です。定義済みのバッファプロパティについては、本ドキュメントの Sample Extension Types セクションで説明しています。独自の GUID 値を使用して、独自のサンプル拡張スキームを定義することもできます。
pvBufferPropertyvoid*outguidBufferProperty で指定されたプロパティの値を受け取るバッファへのポインターです。
pdwBufferPropertySizeDWORD*inoutpvBufferProperty が指すバッファのサイズを格納した DWORD 値へのポインターです。pvBufferPropertyNULL を渡した場合、メソッドはこのパラメーターが指す値を、プロパティ値を格納するのに必要なサイズに設定します。pvBufferPropertyNULL 以外の値を渡した場合、このパラメーターが指す値は pvBufferProperty が指すバッファのサイズと等しくなければなりません。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_POINTER
pdwBufferPropertySizeNULL です。
NS_E_UNSUPPORTED_PROPERTY
guidBufferProperty として指定されたプロパティが、このバッファオブジェクトに設定されていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

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

出力引数:
#define global IID_INSSBuffer3 "{C87CEAAF-75BE-4BC4-84EB-AC2798507672}"
#usecom global INSSBuffer3 IID_INSSBuffer3 "{}"
#comfunc global INSSBuffer3_SetProperty  10 int,sptr,int
#comfunc global INSSBuffer3_GetProperty  11 int,sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。