IVdsAsync
COM公式ドキュメント
IVdsAsync (vdshwprv.h) インターフェイスは非同期操作を管理します。非同期操作を開始するメソッドは、IVdsAsync インターフェイスへのポインターを返します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IVdsAsync::Cancel メソッド (vdshwprv.h) は非同期操作をキャンセルします。
戻り値
このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
|
このメソッドはサポートされていません。ベーシックプロバイダーも現在のダイナミックプロバイダーも、このメソッドをサポートしていません。 |
|
操作は既にキャンセルされています。 |
|
操作が進みすぎているため、キャンセルできません。 |
|
ファイルシステムが指定された操作と互換性がありません。 |
|
メディアがこの操作と互換性がありません。 |
|
アクセスが拒否されました。VDS を使用するアプリケーションは、Backup Operator または Administrators グループのアカウントで実行する必要があります。 |
解説(Remarks)
ダイナミックプロバイダーはこのメソッドを実装しません。ベーシックプロバイダーはディスクのクリーニング時にのみこのメソッドをチェックし、その他の操作では実装しません。
IVdsAsync::Wait メソッド (vdshwprv.h) は、非同期操作が正常に完了するか失敗したときに復帰します。
| pHrResult | HRESULT* | out | 呼び出し元から渡される HRESULT のアドレスです。 |
| pAsyncOut | VDS_ASYNC_OUTPUT* | out | 呼び出し元から渡される VDS_ASYNC_OUTPUT 構造体のアドレスです。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。
確認すべき HRESULT の戻り値は 2 つあります。メソッドが返す値は、呼び出しにおける失敗を報告します。pHrResult を通じて返される HRESULT は、IVdsAsync オブジェクトに関連付けられた非同期操作の失敗を報告するために使用されます。両方の値を確認する必要があります。
解説(Remarks)
このメソッドは、IVdsPack::CreateVolume、IVdsVolume::BreakPlex、IVdsSubSystem::CreateLun、IVdsAdvancedDisk::CreatePartition、および IVdsCreatePartitionEx::CreatePartitionEx の各メソッドによって生成された内包オブジェクトへの参照を追加します。呼び出し元は、内包オブジェクトへの参照を解放する必要があります。
IVdsAsync::QueryStatus メソッド (vdshwprv.h) は、非同期操作が進行中、正常に完了、または失敗したときに復帰します。
| pHrResult | HRESULT* | out | 呼び出し元から渡される、非同期操作の HRESULT のアドレスです。操作が進行中の場合、値は VDS_E_OPERATION_PENDING です。操作が完了している場合、値はその操作が返した HRESULT です。 |
| pulPercentCompleted | DWORD* | out | 呼び出し元から渡される ULONG のアドレスで、非同期操作の状態をパーセンテージで表します。操作が進行中の場合、値は 0 から 99 の間です。操作が完了している場合、値は 100 です。操作の進捗を見積もれない場合、値は 0 です。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| 操作が進行中であるか、完了しています。 | |
|
操作は進行中です。 |
解説(Remarks)
QueryStatus メソッドは、復帰する前に操作の完了を待ちません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsAsync "{D5D23B6D-5A55-4492-9889-397A3C2D2DBC}" #usecom global IVdsAsync IID_IVdsAsync "{}" #comfunc global IVdsAsync_Cancel 3 #comfunc global IVdsAsync_Wait 4 var,var #comfunc global IVdsAsync_QueryStatus 5 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IVdsAsync "{D5D23B6D-5A55-4492-9889-397A3C2D2DBC}" #usecom global IVdsAsync IID_IVdsAsync "{}" #comfunc global IVdsAsync_Cancel 3 #comfunc global IVdsAsync_Wait 4 sptr,sptr #comfunc global IVdsAsync_QueryStatus 5 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。