public void GetFileNameByHandle() { // Can't open the Users folder in a Store app StoreHelper.ValidateStoreGetsUnauthorizedAccess(() => { // @"C:\" -> @"\" var fileHandle = FileMethods.CreateFileSystemIo( @"C:\Users", 0, // We don't care about read or write, we're just getting metadata with this handle System.IO.FileShare.ReadWrite, System.IO.FileMode.Open, 0, FileFlags.OpenReparsePoint // To avoid traversing links | FileFlags.BackupSemantics); // To open directories string name = FileMethods.GetFileNameLegacy(fileHandle); name.Should().Be(@"\Users"); }); }
public void GetPipeObjectInfo() { var fileHandle = FileMethods.CreateFileSystemIo( @"\\.\pipe\", 0, // We don't care about read or write, we're just getting metadata with this handle System.IO.FileShare.ReadWrite, System.IO.FileMode.Open, 0, FileFlags.OpenReparsePoint // To avoid traversing links | FileFlags.BackupSemantics); // To open directories string name = HandleMethods.GetObjectName(fileHandle); name.Should().Be(@"\Device\NamedPipe\"); string typeName = HandleMethods.GetObjectType(fileHandle); typeName.Should().Be(@"File"); string fileName = FileMethods.GetFileName(fileHandle); fileName.Should().Be(@"\"); }
public void GetPipeObjectInfoNoTrailingSlash() { var fileHandle = FileMethods.CreateFileSystemIo( @"\\.\pipe", 0, // We don't care about read or write, we're just getting metadata with this handle System.IO.FileShare.ReadWrite, System.IO.FileMode.Open, 0, FileFlags.OpenReparsePoint // To avoid traversing links | FileFlags.BackupSemantics); // To open directories string name = HandleMethods.GetObjectName(fileHandle); name.Should().Be(@"\Device\NamedPipe"); string typeName = HandleMethods.GetObjectType(fileHandle); typeName.Should().Be(@"File"); // Not sure why this is- probably the source of why so many other things go wrong Action action = () => FileMethods.GetFileName(fileHandle); action.ShouldThrow <ArgumentException>().And.HResult.Should().Be(unchecked ((int)0x80070057)); }