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();
     }
 }