3.1.4.1.6 Volumes

AddMirror: The client MUST use the preceding call sequence description for DeleteVolume to retrieve the volume ID and the volume's last known state input parameters, except that in the final step it MUST NOT call DeleteVolume. The client MUST use the preceding call sequence description for CreateVolume to retrieve the DISK_SPEC input parameter, except that in the final step the client MUST NOT call CreateVolume. The client MUST pass these input parameters to the AddMirror method.

The client MUST set the diskNumber input parameter to 0.

Checking whether a disk has enough free space to host the new copy of the volume data can be done by examining the free regions returned by the EnumDiskRegions method.

CreatePartitionsForVolume:  The client MUST use the preceding call sequence description for DeleteVolume, except that in the final step it MUST use CreatePartitionsForVolume rather than DeleteVolume.

CreateVolume:  Before invoking CreateVolume, the client MUST invoke EnumDisks to retrieve the disk ID and the disk's last known state. The client MUST pass these returned values as the DISK_SPEC structure's ID and lastKnownState members in the input parameter to the CreateVolume method. These values are returned by EnumDisks as DISK_INFO::id and DISK_INFO::lastKnownState.

The client MUST call EnumDiskRegions method with the disk ID as input parameter and examine the free regions returned to determine whether the disk had enough free space to host the new volume. For the VOLUME_SPEC input parameter: The lastKnownState, type, and partitionType members are ignored. These parameters MUST be set to 0.

CreateVolumeAssignAndFormat:  The client MUST use the preceding call sequence description for CreateVolume to retrieve the DISK_SPEC input parameter, except that in the final step the client MUST NOT call CreateVolume. If the client does not want to assign a drive letter, the letter parameter MUST be a 2-byte null character or unicode SPACE character. If the clients wants to assign a drive letter, the client MUST use the preceding call sequence for AssignDriveLetter to retrieve the letterLastKnownState input parameter, except that in the final step it MUST NOT call AssignDriveLetter. The client MUST use the preceding call sequence for Format to retrieve the FILE_SYSTEM_INFO::fsType input parameter, except that in the final step it MUST NOT call Format. The client MUST pass these input parameters to the CreateVolumeAssignAndFormat method.

CreateVolumeAssignAndFormatEx: The client MUST use the preceding call sequence description for CreateVolume to retrieve the DISK_SPEC input parameter, except that in the final step it MUST NOT call CreateVolume. If the client does not want to assign a drive letter, the letter parameter MUST be a 2-byte null character or Unicode SPACE character. If the client wants to assign a drive letter, the client MUST use the preceding call sequence for AssignDriveLetter to retrieve the letterLastKnownState input parameter, except that in the final step the client MUST NOT call AssignDriveLetter. The client MUST use the preceding call sequence for Format to retrieve the FILE_SYSTEM_INFO:::fsType input parameter, except that in the final step the client MUST NOT call Format. The client MUST pass these input parameters to the CreateVolumeAssignAndFormatEx method.

DeletePartitionsForVolume:  The client MUST use the preceding call sequence description for DeleteVolume, except that in the final step the client MUST use DeletePartitionsForVolume rather than DeleteVolume.

DeleteVolume: Before invoking DeleteVolume, the client MUST invoke EnumVolumes to retrieve the volume ID and the volume's last known state. The client MUST pass these returned values as the volumeId and volumeLastKnownState input parameters to the DeleteVolume method. The EnumVolumes method returns these parameters as the VOLUME_INFO::id and VOLUME_INFO::lastKnownState structure members.

FTBreakMirror:  The client MUST use the preceding call sequence description for FTDeleteVolume, except that in the final step the client MUST use FTBreakMirror rather than FTDeleteVolume.

FTDeleteVolume: Before invoking FTDeleteVolume, the client MUST invoke FTEnumVolumes to retrieve the volume ID and the volume's last known state. The client MUST pass these returned values as the volumeId and volumeLastKnownState input parameters to the FTDeleteVolume method. The FTEnumVolumes method returns these parameters as the VOLUME_INFO::id and VOLUME_INFO::lastKnownState structure members.

FTEnumLogicalDiskMembers: Before invoking FTEnumLogicalDiskMembers, the client MUST invoke FTEnumVolumes or EnumDiskRegions to retrieve the volume ID. The client MUST pass this returned value as the volumeId input parameter to the FTEnumLogicalDiskMembers method. The EnumDiskRegions method returns this value as the REGION_INFO::volId structure member; FTEnumVolumes returns this parameter as the VOLUME_INFO::id structure member.

FTRegenerateParityStripe:  The client MUST use the preceding call sequence description for FTDeleteVolume, except that in the final step the client MUST use FTRegenerateParityStripe rather than FTDeleteVolume.

FTReplaceMirrorPartition: Before invoking FTReplaceMirrorPartition, the client MUST invoke FTEnumVolumes to retrieve the volume ID and the volume's last known state. The client MUST pass these returned values as the volumeId and volumeLastKnownState input parameters to the FTReplaceMirrorPartition method. FTEnumVolumes returns these parameters as the VOLUME_INFO::id and VOLUME_INFO::lastKnownState structure members.

Before invoking FTReplaceMirrorPartition, the client MUST also invoke EnumDiskRegions to retrieve the region ID and the region's last known state. The client MUST pass these returned values as the newRegionId and newRegionLastKnownState input parameters to the FTReplaceMirrorPartition method. The EnumDiskRegions method returns these values as the REGION_INFO::volId and REGION_INFO::lastKnownState structure members.

Note The client MUST pass 0 for the oldMemberId and oldMemberLastKnownState parameters because they are not used or implemented.

FTReplaceParityStripePartition: The client MUST use the preceding call sequence description for FTReplaceMirrorPartition, except that in the final step the client MUST use FTReplaceParityStripePartition rather than FTReplaceMirrorPartition.

FTResyncMirror:  The client MUST use the preceding call sequence description for FTDeleteVolume, except that in the final step the client MUST use FTResyncMirror rather than FTDeleteVolume.

GetVolumeDeviceName:  The client MUST use the preceding call sequence description for GetVolumeMountName, except that in the final step it MUST use GetVolumeDeviceName rather than GetVolumeMountName.

GrowVolume: The client MUST use the preceding call sequence description for GetVolumeMountName to retrieve the volume ID input parameter, except that in the final step it MUST NOT call GetVolumeMountName. The client MUST use the preceding call sequence description for CreateVolume to retrieve the DISK_SPEC input parameter, except that in the final step it MUST NOT call CreateVolume.

Before invoking GrowVolume, the client MUST invoke EnumVolumes to retrieve the volume layout and the volume's last known state. The client MUST pass these returned values as the VOLUME_SPEC structure's layout and lastKnownState members in the input parameter to the GrowVolume method. These values are returned by EnumVolumes as VOLUME_INFO::layout and VOLUME _INFO::lastKnownState.

RemoveMirror:  The client MUST use the preceding call sequence description for DeleteVolume to retrieve the volume ID and volume's last known state input parameters, except that in the final step the client MUST NOT call DeleteVolume. The client MUST use the preceding call sequence description for WriteSignature to retrieve the diskId and diskLastKnownState input parameters, except that in the final step the client MUST NOT call WriteSignature. The client MUST pass these input parameters to the RemoveMirror method.

ReplaceRaid5Column: The client MUST use the preceding call sequence description for DeleteVolume, except that in the final step it MUST use ReplaceRaid5Column, instead of DeleteVolume.

Before invoking ReplaceRaid5Column, the client MUST invoke EnumDisks to retrieve the replacement disk id and the disk's last known state. The client MUST pass these returned values as the newDiskId and diskLastKnownState input parameters to the ReplaceRaid5Column method. The EnumDisks method returns these values as the DISK_INFO::id and DISK_INFO::lastKnownState structure members.

RestartVolume: The RestartVolume MUST use the preceding call sequence description for DeleteVolume, except that in the final step it MUST use RestartVolume rather than DeleteVolume.

SplitMirror:  For call sequencing related to the volumeId and volumeLastKnownState input parameters, see DeleteVolume. For call sequencing related to the diskId and diskLastKnownState input parameters, see WriteSignature. For call sequencing related to the letterLastKnownState input parameter, see AssignDriveLetter. The client MUST use the preceding call sequence description for DeleteVolume to retrieve the volume ID and the volume's last known state input parameters, except that in the final step the client MUST NOT call DeleteVolume. The client MUST use the preceding call sequence description for WriteSignature to retrieve the diskId and diskLastKnownState input parameters, except that in the final step the client MUST NOT call WriteSignature. If the client does not want to assign a drive letter, the letter parameter MUST be a 2-byte null character or unicode SPACE character. If the clients wants to assign a drive letter, the client MUST use the call sequence description for AssignDriveLetter to retrieve the letterLastKnownState input parameter, except that in the final step the client MUST NOT call AssignDriveLetter. To force the split, the client MUST set the TASK_INFO::error parameter to LDM_E_VOLUME_IN_USE. The client MUST pass these input parameters to the SplitMirror method.