13.07.2015 Views

[MS-VDS]: Virtual Disk Service (VDS) Protocol Specification

[MS-VDS]: Virtual Disk Service (VDS) Protocol Specification

[MS-VDS]: Virtual Disk Service (VDS) Protocol Specification

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

For example, to merge a differencing disk that is a child of a single parent disk into that parent disk,call the IVdsV<strong>Disk</strong>::Open method on the child disk with the ReadWriteDepth parameter set to thevalue 2. This value opens both disks with the READ and WRITE flags set, which is necessary fordisks to be merged with subsequent call to the IVdsOpenV<strong>Disk</strong>::Merge method.HRESULT Merge([in] MERGE_VIRTUAL_DISK_FLAG Flags,[in] ULONG MergeDepth,[out] IVdsAsync** ppAsync);Flags: A MERGE_VIRTUAL_DISK_FLAG (section 2.2.2.19.1.4) enumeration value thatspecifies how the virtual disk is to be merged.MergeDepth: Number of parent backing store files in the differencing chain to be updated. Forexample, if MergeDepth has a value of 1, the data blocks from the given differencing disk aremoved into its parent. If the given differencing disk's parent is also a differencing disk, (inother words the given disk is diskA, its parent is diskB, and diskB's parent is diskC), and theMergeDepth parameter value is 2, the data blocks from the given differencing disk (diskA) aremoved into its parent (diskB), and then its parent's (diskB's) data blocks are moved into itsparent (diskC).ppAsync: A pointer to an IVdsAsync (section 3.1.3.1) interface that, if the operation issuccessfully completed, receives the IVdsAsync interface to monitor and control thisoperation. Callers MUST release the interface when they are done with it.Return Values: The method MUST return zero to indicate success, or return an implementationspecificnonzero error code to indicate failure.When the server receives this message, it MUST validate the following parameters:•Verify that Flags is a bitwise OR of values from the MERGE_VIRTUAL_DISK_FLAGenumeration.•Verify that ppAsync is not NULL.The server MUST perform the following:•Create a new async object implementing the IVdsAsync interface with an output type of<strong>VDS</strong>_ASYNCOUT_MERGE_VDISK and set the pointer ppAsync to the interface.•Return an HRESULT indicating failure or success. Any errors encountered up through this pointin processing the operation are returned in this HRESULT.The server MUST then perform the following in sequence. Errors generated in this sequence of stepsare returned in the pHrResult parameter to the IVdsAsync::Wait or IVdsAsyncQueryStatus methods.•Pass the input parameters to the operating system to merge the disk with its parents.•Set the return code in the async object to an HRESULT indicating failure or success of theoperating system.•If the task completed successfully, set the percentage completed value in the async object to100.•Set the signal state in the async object to TRUE.[<strong>MS</strong>-<strong>VDS</strong>] — v20110610<strong>Virtual</strong> <strong>Disk</strong> <strong>Service</strong> (<strong>VDS</strong>) <strong>Protocol</strong> <strong>Specification</strong>Copyright © 2011 Microsoft Corporation.Release: Friday, June 10, 2011274 / 360

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!