IMFSaveJob
COM公式ドキュメント
ソースのバイトストリームからメディアデータを、アプリケーションが提供するバイトストリームへ永続化します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Windows Media ファイルをアプリケーションのバイトストリームへ保存する処理を開始します。
| pStream | IMFByteStream* | in | アプリケーションのバイトストリームの IMFByteStream インターフェイスへのポインター。ソースのバイトストリームのデータは、このバイトストリームに書き込まれます。 |
| pCallback | IMFAsyncCallback* | in | コールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元はこのインターフェイスを実装する必要があります。 |
| pState | IUnknown* | in | 呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトを使用して状態情報を保持できます。オブジェクトは、コールバックが呼び出されるときに呼び出し元へ返されます。 |
戻り値
このメソッドは HRESULT を返します。使用可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
処理が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFSaveJob::EndSave を呼び出して非同期要求を完了する必要があります。
IMFSaveJob::BeginSave によって開始された処理を完了します。
| pResult | IMFAsyncResult* | in | IMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったものと同じポインターを渡します。 |
戻り値
このメソッドは HRESULT を返します。使用可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
IMFSaveJob::BeginSave によって開始された処理をキャンセルします。
戻り値
このメソッドは HRESULT を返します。使用可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
指定したバイトストリームへ保存されたコンテンツの割合(パーセント)を取得します。
| pdwPercentComplete | DWORD* | out | 完了率(パーセント)を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。使用可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFSaveJob "{E9931663-80BF-4C6E-98AF-5DCF58747D1F}" #usecom global IMFSaveJob IID_IMFSaveJob "{}" #comfunc global IMFSaveJob_BeginSave 3 sptr,sptr,sptr #comfunc global IMFSaveJob_EndSave 4 sptr #comfunc global IMFSaveJob_CancelSave 5 #comfunc global IMFSaveJob_GetProgress 6 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFSaveJob "{E9931663-80BF-4C6E-98AF-5DCF58747D1F}" #usecom global IMFSaveJob IID_IMFSaveJob "{}" #comfunc global IMFSaveJob_BeginSave 3 sptr,sptr,sptr #comfunc global IMFSaveJob_EndSave 4 sptr #comfunc global IMFSaveJob_CancelSave 5 #comfunc global IMFSaveJob_GetProgress 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。