Win32 API 日本語リファレンス
ホームStorage.VirtualDiskService › IVdsAsync

IVdsAsync

COM
IIDd5d23b6d-5a55-4492-9889-397a3c2d2dbc継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVdsAsync (vdshwprv.h) インターフェイスは非同期操作を管理します。非同期操作を開始するメソッドは、IVdsAsync インターフェイスへのポインターを返します。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Cancel()

IVdsAsync::Cancel メソッド (vdshwprv.h) は非同期操作をキャンセルします。

戻り値

このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。

リターンコード/値 説明
VDS_E_NOT_SUPPORTED
0x80042400L
このメソッドはサポートされていません。ベーシックプロバイダーも現在のダイナミックプロバイダーも、このメソッドをサポートしていません。
VDS_E_OPERATION_CANCELED
0x8004240DL
操作は既にキャンセルされています。
VDS_E_CANCEL_TOO_LATE
0x8004240CL
操作が進みすぎているため、キャンセルできません。
VDS_E_INCOMPATIBLE_FILE_SYSTEM
0x80042425L
ファイルシステムが指定された操作と互換性がありません。
VDS_E_INCOMPATIBLE_MEDIA
0x80042426L
メディアがこの操作と互換性がありません。
VDS_E_ACCESS_DENIED
0x80042427L
アクセスが拒否されました。VDS を使用するアプリケーションは、Backup Operator または Administrators グループのアカウントで実行する必要があります。

解説(Remarks)

ダイナミックプロバイダーはこのメソッドを実装しません。ベーシックプロバイダーはディスクのクリーニング時にのみこのメソッドをチェックし、その他の操作では実装しません。

vtbl 4 HRESULT Wait(HRESULT* pHrResult, VDS_ASYNC_OUTPUT* pAsyncOut)

IVdsAsync::Wait メソッド (vdshwprv.h) は、非同期操作が正常に完了するか失敗したときに復帰します。

pHrResultHRESULT*out呼び出し元から渡される HRESULT のアドレスです。
pAsyncOutVDS_ASYNC_OUTPUT*out呼び出し元から渡される VDS_ASYNC_OUTPUT 構造体のアドレスです。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。

確認すべき HRESULT の戻り値は 2 つあります。メソッドが返す値は、呼び出しにおける失敗を報告します。pHrResult を通じて返される HRESULT は、IVdsAsync オブジェクトに関連付けられた非同期操作の失敗を報告するために使用されます。両方の値を確認する必要があります。

解説(Remarks)

このメソッドは、IVdsPack::CreateVolumeIVdsVolume::BreakPlexIVdsSubSystem::CreateLunIVdsAdvancedDisk::CreatePartition、および IVdsCreatePartitionEx::CreatePartitionEx の各メソッドによって生成された内包オブジェクトへの参照を追加します。呼び出し元は、内包オブジェクトへの参照を解放する必要があります。

vtbl 5 HRESULT QueryStatus(HRESULT* pHrResult, DWORD* pulPercentCompleted)

IVdsAsync::QueryStatus メソッド (vdshwprv.h) は、非同期操作が進行中、正常に完了、または失敗したときに復帰します。

pHrResultHRESULT*out呼び出し元から渡される、非同期操作の HRESULT のアドレスです。操作が進行中の場合、値は VDS_E_OPERATION_PENDING です。操作が完了している場合、値はその操作が返した HRESULT です。
pulPercentCompletedDWORD*out呼び出し元から渡される ULONG のアドレスで、非同期操作の状態をパーセンテージで表します。操作が進行中の場合、値は 0 から 99 の間です。操作が完了している場合、値は 100 です。操作の進捗を見積もれない場合、値は 0 です。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値 を返すことができます。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。

リターンコード/値 説明
S_OK
操作が進行中であるか、完了しています。
VDS_E_OPERATION_PENDING
0x80042409L
操作は進行中です。

解説(Remarks)

QueryStatus メソッドは、復帰する前に操作の完了を待ちません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。