IVssAsync
COM公式ドキュメント
IVssAsync インターフェイスは、バックグラウンドで実行され、通常は完了までに長い時間を要する非同期操作を開始するメソッドから、呼び出し元のアプリケーションに返されます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Cancel メソッドは、完了していない非同期操作をキャンセルします。
戻り値
すべての IVssAsync オブジェクトに対する Cancel の呼び出しは、次の状態コードをサポートします。
| 値 | 意味 |
|---|---|
| 非同期操作が正常にキャンセルされました。 | |
| 非同期操作は、このメソッドを呼び出す前に既にキャンセルされていました。 | |
| 非同期操作は、このメソッドを呼び出す前に既に完了していました。 | |
|
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、
Event and Error Handling Under VSS を参照してください。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は Windows Server 2008 R2 および Windows 7 以降でのみサポートされます。それ以前では代わりに E_UNEXPECTED が使用されます。 |
Cancel を呼び出す前に操作が失敗して完了していた場合、 Cancel はその操作で発生したエラーを返します。
特定の IVssAsync::Cancel に対する戻り値の完全な一覧を確認するには、その IVssAsync オブジェクトを返したメソッドのエラーコードを参照してください。
Wait メソッドは、完了していない非同期操作が終了するまで待機します。
| dwMilliseconds | DWORD | in | 非同期処理が復帰するまでにこのメソッドが待機する時間 (ミリ秒単位)。この時間を超えるとタイムアウトします。 この引数の既定値は INFINITE です。 Windows Server 2003: このパラメーターは予約されており、INFINITE を指定する必要があります。それ以外の値を指定した場合、Wait の呼び出しは E_INVALIDARG で失敗します。 Windows XP: このメソッドにはパラメーターがありません。 |
QueryStatus メソッドは、非同期操作の状態を照会します。
| pHrResult | HRESULT* | out | 現在の IVssAsync オブジェクトを返した非同期操作の状態。 すべての IVssAsync オブジェクトに対する QueryStatus の呼び出しは、次の状態コードをサポートします。
これら以外の戻り値が返されることもありますが、それは最初に IVssAsync オブジェクトを返したメソッドの戻りコードに依存します。 | ||||||||
| pReserved | INT* | inout | このパラメーターの値は NULL にする必要があります。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVssAsync "{507C37B4-CF5B-4E95-B0AF-14EB9767467E}" #usecom global IVssAsync IID_IVssAsync "{}" #comfunc global IVssAsync_Cancel 3 #comfunc global IVssAsync_Wait 4 int #comfunc global IVssAsync_QueryStatus 5 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IVssAsync "{507C37B4-CF5B-4E95-B0AF-14EB9767467E}" #usecom global IVssAsync IID_IVssAsync "{}" #comfunc global IVssAsync_Cancel 3 #comfunc global IVssAsync_Wait 4 int #comfunc global IVssAsync_QueryStatus 5 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。