次の方法で共有


IVdsVolumePlex::Repair メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

不良なメンバーを適切なディスクに移動することで、フォールト トレラント ボリュームプレックスを修復します。

構文

HRESULT Repair(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

パラメーター

[in] pInputDiskArray

ディスクごとに 1 つの構造体 VDS_INPUT_DISK 構造体の配列へのポインター。

メモ この構造体の必要なメンバー (diskIdullSize) のみを含めます。
 
Windows Server 2003: この方法では、パリティ (RAID-5) でストライピングされたボリュームのみを修復でき、一度にこのメソッドに渡すことができる新しいディスクは 1 つだけです。

[in] lNumberOfDisks

ボリューム内のディスクの合計数。

[out] ppAsync

VDS が戻り時に初期化する IVdsAsync インターフェイス ポインターのアドレス。 呼び出し元はインターフェイスを解放する必要があります。 操作の状態を取り消す、待機する、またはクエリを実行するには、このポインターを使用します。

このメソッドで IVdsAsync::Wait を呼び出し、成功した HRESULT 値が返された場合は、各インターフェイス ポインターで IUnknown::Release メソッドを呼び出して、VDS_ASYNC_OUTPUT構造体で返されたインターフェイスを解放する必要があります。 ただし、Wait がエラー HRESULT 値を返す場合、または WaitpHrResult パラメーターがエラー HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT構造体内のインターフェイス ポインターは NULL であり、解放する必要はありません。 成功または失敗の HRESULT 値をテストするには、Winerror.h で定義 されている SUCCEEDED マクロと FAILED マクロを使用します。

戻り値

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

リターン コード/値 説明
S_OK
修復が正常に完了しました。
E_NOTIMPL
呼び出し元は、基本的なボリュームのプレックスを修復しようとしましたが、これは常に正常であり、修復は必要ありません。
VDS_E_REPAIR_VOLUMESTATE
0x80042460L
プレックスまたはボリュームにアクセスできません。 さらに、このエラーは、plex の状態が、冗長性の失敗、冗長性の失敗、または冗長性の失敗のいずれかではない場合に返される可能性があります。
VDS_E_DISK_IN_USE_BY_VOLUME
0x8004244CL
ディスクの 1 つ以上のエクステントがボリュームで既に使用されています。
VDS_E_VOLUME_INCOMPLETE
0x80042432L
ボリュームに 1 つ以上のメンバーがないか、何らかの形で不完全です。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー vds.h
Library Uuid.lib

関連項目

IVdsAsync

IVdsAsync::Wait

IVdsVolumePlex

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK