/// <summary> /// Unmount a mapped drive. /// </summary> /// <param name="driveLetter"></param> public static void Unmount(string driveLetter) { driveLetter = ParseDriveLetter(driveLetter); // Unmount. var result = NetworkApi.WNetCancelConnection2(driveLetter, 0, true); if (result != 0) { throw new FilesMappedDriveException(String.Format(UnmountError, driveLetter, (SYSTEM_ERROR)result), result); } }
/// <summary> /// Create a mapped drive pointing to Azure files. /// </summary> /// <param name="driveLetter"></param> /// <param name="filesPath"></param> /// <param name="accountName"></param> /// <param name="accountKey"></param> /// <param name="force"></param> public static void Mount(string driveLetter, string filesPath, string accountName, string accountKey, bool force = true) { if (String.IsNullOrEmpty(filesPath)) { throw new ArgumentException("The filesPath is required.", "filesPath"); } if (String.IsNullOrEmpty(accountName)) { throw new ArgumentException("The accountName is required.", "accountName"); } if (String.IsNullOrEmpty(accountKey)) { throw new ArgumentException("The accountKey is required.", "accountKey"); } driveLetter = ParseDriveLetter(driveLetter); // Define the new resource. var resource = new NETRESOURCE { dwScope = (ResourceScope)2, dwType = (ResourceType)1, dwDisplayType = (ResourceDisplayType)3, dwUsage = (ResourceUsage)1, lpRemoteName = filesPath, lpLocalName = driveLetter }; // Close connection if it exists. if (force) { NetworkApi.WNetCancelConnection2(driveLetter, 0, true); } // Create the connection. var result = NetworkApi.WNetAddConnection2(resource, accountKey, accountName, 0); if (result != 0) { throw new FilesMappedDriveException(String.Format(MountError, driveLetter, filesPath, (SYSTEM_ERROR)result), result); } }