public static DiskGroupLockResult LockDiskGroup(List <DynamicDisk> diskGroup) { // Lock disks and volumes LockStatus status = LockManager.LockDynamicDiskGroup(diskGroup, true); if (status != LockStatus.Success) { if (status == LockStatus.CannotLockDisk) { return(DiskGroupLockResult.CannotLockDisk); } else { return(DiskGroupLockResult.CannotLockVolume); } } if (Environment.OSVersion.Version.Major >= 6) { if (!DiskOfflineHelper.IsDiskGroupOnlineAndWritable(diskGroup)) { LockManager.UnlockAllDisksAndVolumes(); return(DiskGroupLockResult.OneOrMoreDisksAreOfflineOrReadonly); } bool success = DiskOfflineHelper.OfflineAllOrNone(diskGroup); if (!success) { LockManager.UnlockAllDisksAndVolumes(); return(DiskGroupLockResult.CannotTakeDiskOffline); } } return(DiskGroupLockResult.Success); }
public static void UnlockDiskGroup(List <DynamicDisk> diskGroup) { if (Environment.OSVersion.Version.Major >= 6) { DiskOfflineHelper.OnlineAll(diskGroup); LockManager.UnlockAllDisksAndVolumes(); } else { OperatingSystemHelper.RestartLDMAndUnlockDisksAndVolumes(); } }