/// <summary> /// Creates a raw directory handle from an existing directory handle. /// </summary> public static IntPtr CreateDirectoryHandle(IntPtr rootDirectory, string subdirectoryPath) { return(FileMethods.CreateFileRelative( subdirectoryPath, rootDirectory, CreateDisposition.Open, DesiredAccess.ListDirectory | DesiredAccess.Synchronize, ShareModes.ReadWrite | ShareModes.Delete, FileAttributes.None, CreateOptions.SynchronousIoNonalert | CreateOptions.DirectoryFile | CreateOptions.OpenForBackupIntent | CreateOptions.OpenReparsePoint)); }
/// <summary> /// Wrapper to create a directory within another directory /// </summary> public static SafeFileHandle CreateDirectory(SafeFileHandle rootDirectory, string name) { return(FileMethods.CreateFileRelative( name, rootDirectory, CreateDisposition.Create, DesiredAccess.ListDirectory | DesiredAccess.Synchronize, ShareModes.ReadWrite | ShareModes.Delete, FileAttributes.None, CreateOptions.SynchronousIoNonalert | CreateOptions.DirectoryFile | CreateOptions.OpenForBackupIntent | CreateOptions.OpenReparsePoint)); }
public void CreateRelativeToDirectoryHandle() { using (var cleaner = new TestFileCleaner()) { string fileName = System.IO.Path.GetRandomFileName(); using (var directory = DirectoryMethods.CreateDirectoryHandle(cleaner.TempFolder)) { directory.IsInvalid.Should().BeFalse(); using (var file = FileMethods.CreateFileRelative(fileName, directory, CreateDisposition.Create)) { file.IsInvalid.Should().BeFalse(); } FileMethods.FileExists(Paths.Combine(cleaner.TempFolder, fileName)).Should().BeTrue(); } } }