/// <summary> /// Create a new instance of the <see cref="ShellKnownFolder" /> class /// to the specified known folder GUID. /// </summary> /// <param name="knownFolderId">Known folder GUID.</param> /// <returns><see cref="ShellKnownFolder" />.</returns> internal static ShellKnownFolder FromKnownFolderIdInternal(Guid knownFolderId) { IKnownFolder knownFolderNative; IKnownFolderManager knownFolderManager = new KnownFolderManager(); var hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); if (HRESULT.Failed(hr)) { return(null); } return(CreateKnownFolder(knownFolderNative)); }
/// <summary> /// Create a new instance of the <see cref="ShellKnownFolder" /> class /// to the specified known folder ID. /// </summary> /// <param name="knownFolderId">Known folder GUID.</param> /// <returns> /// <see cref="ShellKnownFolder" /> /// </returns> /// <exception cref="ArgumentException">A known folder matching the specified GUID could not be created.</exception> public static ShellKnownFolder FromKnownFolderId(Guid knownFolderId) { Contract.Ensures(Contract.Result <ShellKnownFolder>() != null); IKnownFolder knownFolderNative; var knownFolderManager = new KnownFolderManager(); var hr = knownFolderManager.GetFolder(knownFolderId, out knownFolderNative); if (HRESULT.Failed(hr)) { throw ShellException.FromHRESULT(hr); } var result = CreateKnownFolder(knownFolderNative); if (result == null) { throw new ArgumentException(ErrorMessages.KnownFolderInvalidGuid, nameof(knownFolderId)); } return(result); }