IWSDAsyncResult
COM公式ドキュメント
非同期操作を表します。
解説(Remarks)
IWSDAsyncResult インターフェイスを使用すると、イベントやメッセージの通知を受け取るための待機ハンドルを設定したり、操作の完了をポーリングしたりできます。また、非同期操作の状態を取得したり、イベントの結果や応答本文を取得したりすることもできます。
IWSDAsyncCallback インターフェイスを使用すると、WSDAPI のメッセージングおよびイベント処理を支援する非同期の呼び出しパターンを実現でき、アプリケーションは操作の状態に基づいてコールバック通知を受け取ることができます。
失敗した非同期操作は、完了した非同期操作として扱われます。エラーやフォルトの情報は、IWSDAsyncCallback インターフェイスの IWSDAsyncCallback::AsyncOperationComplete メソッドを使用して取得できます。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
非同期操作が完了したときに呼び出すコールバックインターフェイスを指定します。
| pCallback | IWSDAsyncCallback* | in | ユーザーが実装したコールバックを含む IWSDAsyncCallback オブジェクトへのポインター。 |
| pAsyncState | IUnknown* | in | コールバックに渡す、ユーザー定義の状態情報。 |
戻り値
このメソッドは次のいずれかの値を返します。
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pCallback が NULL です。 |
解説(Remarks)
IWSDAsyncCallback::AsyncOperationComplete メソッドには、完了するメッセージに関連付けられた結果オブジェクトと状態が渡されます。
pCallback は、IWSDAsyncResult オブジェクトが破棄されるときに解放されます。
操作が完了したときにシグナル状態にする待機ハンドルを指定します。
| hWaitHandle | HANDLE | in | 設定する待機ハンドル。 |
戻り値
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| hWaitHandle が NULL です。 | |
| メソッドが失敗しました。 |
解説(Remarks)
非同期操作が完了するまで hWaitHandle を閉じないでください。
操作が完了したかどうかを示します。
戻り値
このメソッドは次のいずれかの値を返します。
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 操作は完了しました。 | |
| 操作は完了していません。 |
解説(Remarks)
失敗した非同期操作は、完了した非同期操作として扱われます。エラーやフォルトの情報は、IWSDAsyncCallback インターフェイスの IWSDAsyncCallback::AsyncOperationComplete メソッドを使用して取得できます。
非同期操作の状態を取得します。
| ppAsyncState | IUnknown** | out | ユーザー定義の状態情報。 |
戻り値
このメソッドは次のいずれかの値を返します。
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 操作は正常に完了しました。 | |
| ppAsyncState が NULL です。 |
非同期操作を中止します。
戻り値
解説(Remarks)
Abort は、SetCallback で設定された保留中のすべてのコールバックが完了するのを待ってから、呼び出し元に制御を返します。
イベントの結果を格納した WSD_EVENT 構造体を取得します。
| pEvent | WSD_EVENT* | out | イベントに関するデータを提供する WSD_EVENT 構造体への参照。 |
戻り値
このメソッドは次のいずれかの値を返します。
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pEvent が NULL です。 | |
| イベントがまだ利用可能でないか、非同期操作が完了していません。 |
解説(Remarks)
このメソッドは生成されたコードからのみ、かつ IWSDAsyncResult オブジェクトが操作の完了を通知した後にのみ呼び出してください。
非同期操作のエンドポイントプロキシを取得します。
| ppEndpoint | IWSDEndpointProxy** | out | エンドポイントプロキシを実装する IWSDEndpointProxy インターフェイス。 |
戻り値
このメソッドは次のいずれかの値を返します。
返される可能性のある値には、以下が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ppEndpoint が NULL です。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWSDAsyncResult "{11A9852A-8DD8-423E-B537-9356DB4FBFB8}" #usecom global IWSDAsyncResult IID_IWSDAsyncResult "{}" #comfunc global IWSDAsyncResult_SetCallback 3 sptr,sptr #comfunc global IWSDAsyncResult_SetWaitHandle 4 sptr #comfunc global IWSDAsyncResult_HasCompleted 5 #comfunc global IWSDAsyncResult_GetAsyncState 6 sptr #comfunc global IWSDAsyncResult_Abort 7 #comfunc global IWSDAsyncResult_GetEvent 8 var #comfunc global IWSDAsyncResult_GetEndpointProxy 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWSDAsyncResult "{11A9852A-8DD8-423E-B537-9356DB4FBFB8}" #usecom global IWSDAsyncResult IID_IWSDAsyncResult "{}" #comfunc global IWSDAsyncResult_SetCallback 3 sptr,sptr #comfunc global IWSDAsyncResult_SetWaitHandle 4 sptr #comfunc global IWSDAsyncResult_HasCompleted 5 #comfunc global IWSDAsyncResult_GetAsyncState 6 sptr #comfunc global IWSDAsyncResult_Abort 7 #comfunc global IWSDAsyncResult_GetEvent 8 sptr #comfunc global IWSDAsyncResult_GetEndpointProxy 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。