3.2.4.4.3.42 IVolumeClient3::DiskMergeQuery (Opnum 45)

The DiskMergeQuery method gathers disk and volume information needed to merge a foreign dynamic disk group into the primary disk group of the server.

 HRESULT DiskMergeQuery(
   [in] int cchDgid,
   [in, size_is(cchDgid)] byte* dgid,
   [in] int numDisks,
   [in, size_is(numDisks)] LdmObjectId* diskList,
   [out] hyper* merge_config_tid,
   [out] int* numRids,
   [out, size_is(,*numRids)] hyper** merge_dm_rids,
   [out] int* numObjects,
   [out, size_is(,*numObjects)] MERGE_OBJECT_INFO** mergeObjectInfo,
   [in, out] unsigned long* flags,
   [out] TASK_INFO* tinfo
 );

cchDgid: Size of dgid in characters, including the terminating null character.

dgid: Null-terminated ASCII string that contains the UUID of the disk group to be merged.

numDisks: Number of disks passed in diskList.

diskList: Array of OIDs of type LdmObjectId that specify the disks of the dgid group to be merged.

merge_config_tid: Pointer to the modification sequence number of the disk group to be merged.

numRids: Pointer to the number of elements returned in merge_dm_rids.

merge_dm_rids: Pointer to an array of disk records that represent the disks that will be merged. Memory for the array is allocated by the server and freed by the client.

numObjects: Number of elements returned in mergeObjectInfo.

mergeObjectInfo: Pointer to an array of MERGE_OBJECT_INFO structures that contain information about the volumes that will be merged.

flags: Disk merge query flags. The value of this field is a logical 'OR' of zero or more of the following applicable flags.

Value

Meaning

DSKMERGE_IN_NO_UNRELATED

0x00000001

Do not retrieve merge information for volumes of the foreign disk group that do not have extents on diskList. This is an input-only flag.

DSKMERGE_OUT_NO_PRIMARY_DG

0x00000001

The machine does not have a primary disk group. This is an output-only flag.

tinfo: Pointer to a TASK_INFO structure that the client can use to track the request's progress.

Return Values: The method MUST return 0 or a nonerror HRESULT on success, or an implementation-specific nonzero error code on failure (as specified in [MS-ERREF]; see also section 2.2.1 for HRESULT values predefined by the Disk Management Remote Protocol).

When the server receives an IVolumeClient3::DiskMergeQuery message, it MUST process that message, as specified in IVolumeClient::DiskMergeQuery (section 3.2.4.4.1.39).