IMFAsyncCallback
COM公式ドキュメント
非同期メソッドの完了をアプリケーションに通知するためのコールバックインターフェイスです。(IMFAsyncCallback)
解説(Remarks)
Microsoft Media Foundation における非同期メソッドの詳細については、Asynchronous Callback Methods を参照してください。
このインターフェイスは、Media Foundation のワークキューで作業項目を実行するためにも使用されます。詳細については、Work Queues を参照してください。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コールバックのディスパッチを行うスレッドに構成情報を提供します。(IMFAsyncCallback.GetParameters)
| pdwFlags | DWORD* | out | コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドの動作を示すフラグを受け取ります。次の値が定義されています。既定値は 0 です。
| ||||||||||||
| pdwQueue | DWORD* | out | コールバックがディスパッチされるワークキューの識別子を受け取ります。 この値には、Media Foundation の標準ワークキューのいずれか、またはアプリケーションが作成したワークキューを指定できます。Media Foundation の標準ワークキューの一覧については、Work Queue Identifiers を参照してください。新しいワークキューを作成するには、MFAllocateWorkQueue を呼び出します。既定値は MFASYNC_CALLBACK_QUEUE_STANDARD です。 ワークキューが pdwFlags で返される値と互換性がない場合、Media Foundation プラットフォームはコールバックをディスパッチしようとした際に MF_E_INVALID_WORKQUEUE を返します。(MFPutWorkItem を参照してください。) |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 実装されていません。既定の動作を想定します。 |
解説(Remarks)
GetParameters メソッドはコールバックに関する情報を返し、ディスパッチを行うスレッドがコールバックを呼び出す処理を最適化できるようにします。
このメソッドが pdwFlags パラメーターに 0 以外の値を返す場合、Invoke メソッドはここで説明する要件を満たす必要があります。満たさない場合、コールバックがパイプラインを遅延させる可能性があります。
両方のパラメーターに既定値を使用したい場合は、E_NOTIMPL を返してください。既定値は、このページのパラメーターの説明に示されています。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
非同期操作が完了したときに呼び出されます。(IMFAsyncCallback.Invoke)
| pAsyncResult | IMFAsyncResult* | in | IMFAsyncResult インターフェイスへのポインターです。非同期呼び出しを完了するには、このポインターを非同期の End... メソッドに渡します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Invoke の実装内で、対応する End... メソッドを呼び出してください。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFAsyncCallback "{A27003CF-2354-4F2A-8D6A-AB7CFF15437E}" #usecom global IMFAsyncCallback IID_IMFAsyncCallback "{}" #comfunc global IMFAsyncCallback_GetParameters 3 var,var #comfunc global IMFAsyncCallback_Invoke 4 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFAsyncCallback "{A27003CF-2354-4F2A-8D6A-AB7CFF15437E}" #usecom global IMFAsyncCallback IID_IMFAsyncCallback "{}" #comfunc global IMFAsyncCallback_GetParameters 3 sptr,sptr #comfunc global IMFAsyncCallback_Invoke 4 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。