IMultiMediaStream
COM公式ドキュメント
メモ このインターフェースは非推奨です。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetInformation メソッドは、マルチメディアストリームオブジェクトの機能を取得します。
| pdwFlags | MMSSF_GET_INFORMATION_FLAGS* | out | 次のフラグのビット単位の組み合わせを受け取る変数へのポインター。
このパラメーターには NULL を指定できます。 | ||||||||
| pStreamType | STREAM_TYPE* | out | STREAM_TYPE 列挙型のメンバーを受け取る変数へのポインター。この値は、マルチメディアストリームが読み取り専用、書き込み専用、または読み書き可能のいずれであるかを示します。このパラメーターには NULL を指定できます。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 予期しないエラーです。 | |
| 成功しました。 |
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetMediaStream メソッドは、purpose ID で指定されたメディアストリームを取得します。
| idPurpose | GUID* | in | 取得するメディアストリームを識別する MSPID への参照。 |
| ppMediaStream | IMediaStream** | out | IMediaStream インターフェースポインターを受け取る変数のアドレス。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインターは有効です。 | |
|
一致するストリームがありません。 |
| 成功しました。 |
解説(Remarks)
メソッドが成功した場合、呼び出し元は IMediaStream インターフェースを解放する必要があります。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。EnumMediaStreams メソッドは、インデックスで指定されたメディアストリームオブジェクトを取得します。
| Index | INT | in | 取得するメディアストリームの 0 から始まるインデックス。 |
| ppMediaStream | IMediaStream** | out | IMediaStream インターフェースポインターを受け取る変数のアドレス。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| インデックスが範囲外です。 | |
| 成功しました。 |
解説(Remarks)
戻り値が S_OK の場合、呼び出し元は IMediaStream インターフェースを解放する必要があります。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetState メソッドは、マルチメディアストリームオブジェクトの現在の状態を取得します。
| pCurrentState | STREAM_STATE* | out | STREAM_STATE 列挙型のメンバーを受け取る変数へのポインター。 |
戻り値
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。SetState メソッドは、マルチメディアストリームオブジェクトを実行または停止します。
| NewState | STREAM_STATE | in | 新しい状態(実行中または停止)を指定する STREAM_STATE 列挙型のメンバー。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 無効な引数です。 | |
| 成功しました。 |
解説(Remarks)
マルチメディアストリームオブジェクトを停止すると、保留中のデータはすべて削除されます。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetTime メソッドは、現在のストリーム時間を取得します。
| pCurrentTime | LONGLONG* | out | ストリーム時間を 100 ナノ秒単位で受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
| ストリーム時間を取得できなかったか、クロックがありません。 | |
| 成功しました。 |
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetDuration メソッドは、マルチメディアストリームの再生時間を取得します。
| pDuration | LONGLONG* | out | マルチメディアストリームの再生時間を 100 ナノ秒単位で受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| このマルチメディアストリームはシークをサポートしていません。 | |
| NULL ポインター値です。 | |
|
このマルチメディアストリームは読み取り専用ではありません。 |
| 再生時間を判別できませんでした。 | |
| 成功しました。 |
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。Seek メソッドは、すべてのメディアストリームを新しい位置へシークします。
| SeekTime | LONGLONG | in | 新しい位置を指定する STREAM_TIME 値。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| メディアストリームはシークをサポートしていません。 | |
| 成功しました。 |
解説(Remarks)
メディアストリームがシークをサポートしているかどうかを判別するには、IMultiMediaStream::GetInformation メソッドを呼び出します。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。GetEndOfStreamEventHandle メソッドは、マルチメディアストリームの再生が完了したときにシグナル状態になるイベントを取得します。
| phEOS | HANDLE* | out | イベントのハンドルを受け取る変数へのポインター。マルチメディアストリームオブジェクト内のすべてのストリームが再生を完了すると、このイベントがシグナル状態になります。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| NULL ポインター引数です。 | |
|
マルチメディアストリームが停止していません。 |
| 成功しました。 |
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 指定が可能。#define global IID_IMultiMediaStream "{B502D1BC-9A57-11D0-8FDE-00C04FD9189D}" #usecom global IMultiMediaStream IID_IMultiMediaStream "{}" #comfunc global IMultiMediaStream_GetInformation 3 sptr,sptr #comfunc global IMultiMediaStream_GetMediaStream 4 sptr,sptr #comfunc global IMultiMediaStream_EnumMediaStreams 5 int,sptr #comfunc global IMultiMediaStream_GetState 6 sptr #comfunc global IMultiMediaStream_SetState 7 int #comfunc global IMultiMediaStream_GetTime 8 sptr #comfunc global IMultiMediaStream_GetDuration 9 sptr #comfunc global IMultiMediaStream_Seek 10 int64 #comfunc global IMultiMediaStream_GetEndOfStreamEventHandle 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。