Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

IVdsVolumePlex::Repair method

[Beginning with Windows 8 and Windows Server 2012, the Virtual Disk Service COM interface is superseded by the Windows Storage Management API.]

Repairs a fault-tolerant volume plex by moving bad members to good disks.

Syntax


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

Parameters

pInputDiskArray [in]

Pointer to an array of VDS_INPUT_DISK structures, one structure for each disk.

Note   Include only the required members of this structure (diskId and ullSize).

Windows Server 2003:   only volumes that are striped with parity (RAID-5) can be repaired with this method, and only one new disk can be passed to this method at a time.

lNumberOfDisks [in]

The total number of disks in the volume.

ppAsync [out]

The address of an IVdsAsync interface pointer, which VDS initializes on return. Callers must release the interface. Use this pointer to cancel, wait for, or query the status of the operation.

If you call IVdsAsync::Wait on this method and a success HRESULT value is returned, you must release the interfaces returned in the VDS_ASYNC_OUTPUT structure by calling the IUnknown::Release method on each interface pointer. However, if Wait returns a failure HRESULT value, or if the pHrResult parameter of Wait receives a failure HRESULT value, the interface pointers in the VDS_ASYNC_OUTPUT structure are NULL and do not need to be released. You can test for success or failure HRESULT values by using the SUCCEEDED and FAILED macros defined in Winerror.h.

Return value

This method can return standard HRESULT values, such as E_INVALIDARG or E_OUTOFMEMORY, and VDS-specific return values. It can also return converted system error codes using the HRESULT_FROM_WIN32 macro. Errors can originate from VDS itself or from the underlying VDS provider that is being used. Possible return values include the following.

Return code/valueDescription
S_OK

The repair completed successfully.

E_NOTIMPL

The caller attempted to repair the plex of a basic volume, which is always healthy and never needs repair.

VDS_E_REPAIR_VOLUMESTATE
0x80042460L

The plex or volume is not accessible. In addition, this error can be returned when the status of a plex is not one of the following: failing redundancy, failed redundancy, or failed redundancy failing.

VDS_E_DISK_IN_USE_BY_VOLUME
0x8004244CL

One or more extents of the disk are already being used by the volume.

VDS_E_VOLUME_INCOMPLETE
0x80042432L

The volume is missing one or more members or is somehow incomplete.

 

Notes to Implementers

You must return a pointer to the IVdsAsync interface for this method, regardless of whether the call initiates an asynchronous operation.

Requirements

Minimum supported client

Windows Vista [desktop apps only]

Minimum supported server

Windows Server 2003 [desktop apps only]

Header

Vds.h

Library

Uuid.lib

See also

IVdsVolumePlex
IVdsAsync
IVdsAsync::Wait
VDS_ASYNC_OUTPUT
VDS_INPUT_DISK

 

 

Community Additions

Show:
© 2015 Microsoft