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

IMultiMediaStream

COM
IIDb502d1bc-9a57-11d0-8fde-00c04fd9189d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

メモ このインターフェースは非推奨です。

メソッド 9

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

vtbl 3 HRESULT GetInformation(MMSSF_GET_INFORMATION_FLAGS* pdwFlags, STREAM_TYPE* pStreamType)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetInformation メソッドは、マルチメディアストリームオブジェクトの機能を取得します。

pdwFlagsMMSSF_GET_INFORMATION_FLAGS*out

次のフラグのビット単位の組み合わせを受け取る変数へのポインター。

説明
MMSSF_ASYNCHRONOUS オブジェクトは非同期のサンプル更新をサポートします。このフラグは常に返されます。
MMSSF_HASCLOCK オブジェクトはクロックを持ちます。
MMSSF_SUPPORTSEEK オブジェクトはシークをサポートします。

このパラメーターには NULL を指定できます。

pStreamTypeSTREAM_TYPE*outSTREAM_TYPE 列挙型のメンバーを受け取る変数へのポインター。この値は、マルチメディアストリームが読み取り専用、書き込み専用、または読み書き可能のいずれであるかを示します。このパラメーターには NULL を指定できます。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_UNEXPECTED
予期しないエラーです。
S_OK
成功しました。
vtbl 4 HRESULT GetMediaStream(GUID* idPurpose, IMediaStream** ppMediaStream)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetMediaStream メソッドは、purpose ID で指定されたメディアストリームを取得します。

idPurposeGUID*in取得するメディアストリームを識別する MSPID への参照。
ppMediaStreamIMediaStream**outIMediaStream インターフェースポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインターは有効です。
MS_E_NOSTREAM
一致するストリームがありません。
S_OK
成功しました。

解説(Remarks)

メソッドが成功した場合、呼び出し元は IMediaStream インターフェースを解放する必要があります。

vtbl 5 HRESULT EnumMediaStreams(INT Index, IMediaStream** ppMediaStream)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。EnumMediaStreams メソッドは、インデックスで指定されたメディアストリームオブジェクトを取得します。

IndexINTin取得するメディアストリームの 0 から始まるインデックス。
ppMediaStreamIMediaStream**outIMediaStream インターフェースポインターを受け取る変数のアドレス。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
S_FALSE
インデックスが範囲外です。
S_OK
成功しました。

解説(Remarks)

戻り値が S_OK の場合、呼び出し元は IMediaStream インターフェースを解放する必要があります。

vtbl 6 HRESULT GetState(STREAM_STATE* pCurrentState)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetState メソッドは、マルチメディアストリームオブジェクトの現在の状態を取得します。

pCurrentStateSTREAM_STATE*outSTREAM_STATE 列挙型のメンバーを受け取る変数へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
vtbl 7 HRESULT SetState(STREAM_STATE NewState)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。SetState メソッドは、マルチメディアストリームオブジェクトを実行または停止します。

NewStateSTREAM_STATEin新しい状態(実行中または停止)を指定する STREAM_STATE 列挙型のメンバー。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。

解説(Remarks)

マルチメディアストリームオブジェクトを停止すると、保留中のデータはすべて削除されます。

vtbl 8 HRESULT GetTime(LONGLONG* pCurrentTime)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetTime メソッドは、現在のストリーム時間を取得します。

pCurrentTimeLONGLONG*outストリーム時間を 100 ナノ秒単位で受け取る変数へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
S_FALSE
ストリーム時間を取得できなかったか、クロックがありません。
S_OK
成功しました。
vtbl 9 HRESULT GetDuration(LONGLONG* pDuration)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetDuration メソッドは、マルチメディアストリームの再生時間を取得します。

pDurationLONGLONG*outマルチメディアストリームの再生時間を 100 ナノ秒単位で受け取る変数へのポインター。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_NOINTERFACE
このマルチメディアストリームはシークをサポートしていません。
E_POINTER
NULL ポインター値です。
MS_E_INVALIDSTREAMTYPE
このマルチメディアストリームは読み取り専用ではありません。
S_FALSE
再生時間を判別できませんでした。
S_OK
成功しました。
vtbl 10 HRESULT Seek(LONGLONG SeekTime)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。Seek メソッドは、すべてのメディアストリームを新しい位置へシークします。

SeekTimeLONGLONGin新しい位置を指定する STREAM_TIME 値。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_NOINTERFACE
メディアストリームはシークをサポートしていません。
S_OK
成功しました。

解説(Remarks)

メディアストリームがシークをサポートしているかどうかを判別するには、IMultiMediaStream::GetInformation メソッドを呼び出します。

vtbl 11 HRESULT GetEndOfStreamEventHandle(HANDLE* phEOS)

メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetEndOfStreamEventHandle メソッドは、マルチメディアストリームの再生が完了したときにシグナル状態になるイベントを取得します。

phEOSHANDLE*outイベントのハンドルを受け取る変数へのポインター。マルチメディアストリームオブジェクト内のすべてのストリームが再生を完了すると、このイベントがシグナル状態になります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター引数です。
MS_E_BUSY
マルチメディアストリームが停止していません。
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_IMultiMediaStream "{B502D1BC-9A57-11D0-8FDE-00C04FD9189D}"
#usecom global IMultiMediaStream IID_IMultiMediaStream "{}"
#comfunc global IMultiMediaStream_GetInformation             3 var,var
#comfunc global IMultiMediaStream_GetMediaStream             4 var,sptr
#comfunc global IMultiMediaStream_EnumMediaStreams           5 int,sptr
#comfunc global IMultiMediaStream_GetState                   6 var
#comfunc global IMultiMediaStream_SetState                   7 int
#comfunc global IMultiMediaStream_GetTime                    8 var
#comfunc global IMultiMediaStream_GetDuration                9 var
#comfunc global IMultiMediaStream_Seek                       10 int64
#comfunc global IMultiMediaStream_GetEndOfStreamEventHandle  11 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。