Win32 API 日本語リファレンス
ホームMedia.DirectShow.Tv › IStreamBufferRecordingAttribute

IStreamBufferRecordingAttribute

COM
IID16ca4e03-fe69-4705-bd41-5b7dfc0c95f3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IStreamBufferRecordingAttribute インターフェイスは、ストリームバッファーの録画に対して属性を設定および取得します。

解説(Remarks)

このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します。__uuidof(IStreamBufferRecordingAttribute)

メソッド 5

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

vtbl 3 HRESULT SetAttribute(DWORD ulReserved, LPWSTR pszAttributeName, STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType, BYTE* pbAttribute, WORD cbAttributeLength)

SetAttribute メソッドは、ストリームバッファーファイルに属性を設定します。

ulReservedDWORDin予約済み。このパラメーターは 0 に設定します。
pszAttributeNameLPWSTRin属性の名前を格納するワイド文字列。
StreamBufferAttributeTypeSTREAMBUFFER_ATTR_DATATYPEin属性データのデータ型を定義する STREAMBUFFER_ATTR_DATATYPE 列挙体のメンバー。
pbAttributeBYTE*in属性データを格納するバッファーへのポインター。
cbAttributeLengthWORDinpbAttribute で指定したバッファーのサイズ。

戻り値

HRESULT 値を返します。

解説(Remarks)

同じ名前の属性が既に存在する場合、このメソッドは新しい値で上書きします。

レコーダーオブジェクトが既に録画中である場合、このメソッドは失敗します。

vtbl 4 HRESULT GetAttributeCount(DWORD ulReserved, WORD* pcAttributes)

GetAttributeCount メソッドは、このストリームバッファーファイルに対して現在定義されている属性の数を返します。

ulReservedDWORDin予約済み。このパラメーターは 0 に設定します。
pcAttributesWORD*out属性の数を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数
S_OK
成功
vtbl 5 HRESULT GetAttributeByName(LPWSTR pszAttributeName, DWORD* pulReserved, STREAMBUFFER_ATTR_DATATYPE* pStreamBufferAttributeType, BYTE* pbAttribute, WORD* pcbLength)

GetAttributeByName メソッドは、名前で指定した属性を取得します。

pszAttributeNameLPWSTRin属性の名前を格納するワイド文字列。
pulReservedDWORD*in予約済み。このパラメーターは 0 に設定します。
pStreamBufferAttributeTypeSTREAMBUFFER_ATTR_DATATYPE*outSTREAMBUFFER_ATTR_DATATYPE 列挙体のメンバーを受け取る変数へのポインター。この値は、pbAttribute パラメーターで返される属性を解釈するために使用すべきデータ型を示します。
pbAttributeBYTE*out属性をバイト配列として受け取るバッファーへのポインター。バッファーのサイズは pcbLength パラメーターで指定します。配列に必要なサイズを調べるには、pbAttributeNULL に設定し、pcbLength で返される値を確認します。
pcbLengthWORD*inout入力時は、pbAttribute で指定したバッファーのサイズをバイト単位で指定します。出力時は、バッファーにコピーされたバイト数が格納されます。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
S_OK
成功。
VFW_E_BUFFER_OVERFLOW
pbAttribute で指定したバッファーが小さすぎます。
vtbl 6 HRESULT GetAttributeByIndex(WORD wIndex, DWORD* pulReserved, LPWSTR pszAttributeName, WORD* pcchNameLength, STREAMBUFFER_ATTR_DATATYPE* pStreamBufferAttributeType, BYTE* pbAttribute, WORD* pcbLength)

GetAttributeByIndex メソッドは、インデックス番号で指定した属性を取得します。

wIndexWORDin取得する属性の 0 から始まるインデックス。
pulReservedDWORD*in予約済み。このパラメーターは 0 に設定します。
pszAttributeNameLPWSTRout属性の名前を null で終わるワイド文字列として受け取るバッファーへのポインター。バッファーのサイズは pcchNameLength パラメーターで指定します。配列に必要なサイズを調べるには、pszAttributeNameNULL に設定し、pcchNameLength で返される値を確認します。
pcchNameLengthWORD*inout入力時は、pszAttributeName で指定したバッファーのサイズをワイド文字単位で指定します。出力時は、null 終端文字を含めてバッファーにコピーされた文字数が格納されます。ワイド文字は 1 文字あたり 2 バイトであることに注意してください。
pStreamBufferAttributeTypeSTREAMBUFFER_ATTR_DATATYPE*outSTREAMBUFFER_ATTR_DATATYPE 列挙体のメンバーを受け取る変数へのポインター。この値は、pbAttribute パラメーターで返される属性を解釈するために使用すべきデータ型を示します。
pbAttributeBYTE*out属性をバイト配列として受け取るバッファーへのポインター。バッファーのサイズは pcbLength パラメーターで指定します。配列に必要なサイズを調べるには、pbAttributeNULL に設定し、pcbLength で返される値を確認します。
pcbLengthWORD*inout入力時は、pbAttribute で指定したバッファーのサイズをバイト単位で指定します。出力時は、バッファーにコピーされたバイト数が格納されます。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
S_OK
成功。
VFW_E_BUFFER_OVERFLOW
いずれか一方または両方のバッファーが小さすぎます。
vtbl 7 HRESULT EnumAttributes(IEnumStreamBufferRecordingAttrib** ppIEnumStreamBufferAttrib)

EnumAttributes メソッドは、ストリームバッファーファイルの既存の属性を列挙します。このメソッドは列挙子オブジェクトを返し、呼び出し元はそれを使用して属性を列挙できます。

ppIEnumStreamBufferAttribIEnumStreamBufferRecordingAttrib**outIEnumStreamBufferRecordingAttrib インターフェイスポインターを受け取ります。 呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

HRESULT 値を返します。指定できる値には次のものがあります。

戻り値 説明
E_OUTOFMEMORY
メモリ不足
E_POINTER
NULL ポインター引数
S_OK
成功
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IStreamBufferRecordingAttribute "{16CA4E03-FE69-4705-BD41-5B7DFC0C95F3}"
#usecom global IStreamBufferRecordingAttribute IID_IStreamBufferRecordingAttribute "{}"
#comfunc global IStreamBufferRecordingAttribute_SetAttribute         3 int,wstr,int,var,int
#comfunc global IStreamBufferRecordingAttribute_GetAttributeCount    4 int,var
#comfunc global IStreamBufferRecordingAttribute_GetAttributeByName   5 wstr,var,var,var,var
#comfunc global IStreamBufferRecordingAttribute_GetAttributeByIndex  6 int,var,var,var,var,var,var
#comfunc global IStreamBufferRecordingAttribute_EnumAttributes       7 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。