IMFAsyncResult
COM公式ドキュメント
非同期操作の結果に関する情報を提供します。(IMFAsyncResult)
解説(Remarks)
非同期操作を完了するには、このインターフェイスを使用します。コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されたときに、このインターフェイスへのポインターが得られます。操作を完了するには、IMFAsyncResult ポインターを、操作を開始した Begin... メソッドに対応する End... メソッドに渡します。たとえば、非同期メソッドの名前が BeginRead の場合は、EndRead メソッドを呼び出します。詳細については、Calling Asynchronous Methods を参照してください。
非同期メソッドを実装する場合は、MFCreateAsyncResult を呼び出してこのオブジェクトのインスタンスを作成します。詳細については、Writing an Asynchronous Method を参照してください。
このインターフェイスのカスタム実装では、必ず MFASYNCRESULT 構造体を継承する必要があります。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
非同期の Begin メソッドで呼び出し元が指定した状態オブジェクトを返します。(IMFAsyncResult.GetState)
| ppunkState | IUnknown** | out | 状態オブジェクトの IUnknown インターフェイスへのポインターを受け取ります。値が NULL でない場合、呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| この非同期結果に関連付けられた状態オブジェクトがありません。 |
解説(Remarks)
状態オブジェクトは非同期メソッドの呼び出し元が指定し、呼び出し元が定義する任意の目的に使用できます。状態オブジェクトは NULL でもかまいません。状態オブジェクトが NULL の場合、GetState は E_POINTER を返します。
非同期メソッドを実装する場合は、MFCreateAsyncResult 関数の punkState パラメーターを通じて状態オブジェクトを設定します。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期操作の状態を返します。(IMFAsyncResult.GetStatus)
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| 操作が正常に完了しました。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期操作の状態を設定します。(IMFAsyncResult.SetStatus)
| hrStatus | HRESULT | in | 非同期操作の状態。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
非同期メソッドを実装する場合は、SetStatus を呼び出して操作の状態コードを設定します。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期操作に関連付けられたオブジェクトを返します。オブジェクトの種類は(存在する場合)、呼び出された非同期メソッドによって異なります。(IMFAsyncResult.GetObject)
| ppObject | IUnknown** | out | オブジェクトの IUnknown インターフェイスへのポインターを受け取ります。操作にオブジェクトが関連付けられていない場合、このパラメーターは値 NULL を受け取ります。値が NULL でない場合、呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| この非同期結果に関連付けられたオブジェクトがありません。 |
解説(Remarks)
通常、このオブジェクトは非同期メソッドを実装するコンポーネントによって使用されます。これは、コールバックを呼び出す関数が、操作を完了する非同期の End... メソッドに情報を渡すための手段を提供します。
非同期メソッドを実装する場合は、MFCreateAsyncResult 関数の punkObject パラメーターを通じてオブジェクトを設定できます。
非同期結果オブジェクトの内部 IUnknown ポインターが NULL の場合、このメソッドは E_POINTER を返します。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期の Begin メソッドで呼び出し元が指定した状態オブジェクトを、オブジェクトの参照カウントを増やさずに返します。(IMFAsyncResult.GetStateNoAddRef)
戻り値
状態オブジェクトの IUnknown インターフェイスへのポインターを返します。オブジェクトが設定されていない場合は NULL を返します。このポインターは未処理の参照カウントを保持しません。このポインターを保存する場合は、ポインターに対して AddRef を呼び出す必要があります。
解説(Remarks)
このメソッドはリモートで呼び出すことはできません。
このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFAsyncResult "{AC6B7889-0740-4D51-8619-905994A55CC6}"
#usecom global IMFAsyncResult IID_IMFAsyncResult "{}"
#comfunc global IMFAsyncResult_GetState 3 sptr
#comfunc global IMFAsyncResult_GetStatus 4
#comfunc global IMFAsyncResult_SetStatus 5 int
#comfunc global IMFAsyncResult_GetObject 6 sptr
#comfunc global IMFAsyncResult_GetStateNoAddRef 7
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。