public void GetHandleTypeBasic() { string tempPath = FileMethods.GetTempPath(); using (var directory = FileMethods.CreateFile(tempPath, DesiredAccess.GENERIC_READ, ShareMode.FILE_SHARE_READWRITE, CreationDisposition.OPEN_EXISTING, FileAttributes.NONE, FileFlags.FILE_FLAG_BACKUP_SEMANTICS)) { string name = HandleDesktopMethods.GetObjectType(directory); name.Should().Be("File"); } }
public void GetPipeObjectInfo() { var fileHandle = FileMethods.CreateFile( @"\\.\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.FILE_FLAG_OPEN_REPARSE_POINT // To avoid traversing links | FileFlags.FILE_FLAG_BACKUP_SEMANTICS); // To open directories string name = HandleDesktopMethods.GetObjectName(fileHandle); name.Should().Be(@"\Device\NamedPipe\"); string typeName = HandleDesktopMethods.GetObjectType(fileHandle); typeName.Should().Be(@"File"); string fileName = FileMethods.GetFileNameByHandle(fileHandle); fileName.Should().Be(@"\"); }
public void GetPipeObjectInfoNoTrailingSlash() { var fileHandle = FileMethods.CreateFile( @"\\.\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.FILE_FLAG_OPEN_REPARSE_POINT // To avoid traversing links | FileFlags.FILE_FLAG_BACKUP_SEMANTICS); // To open directories string name = HandleDesktopMethods.GetObjectName(fileHandle); name.Should().Be(@"\Device\NamedPipe"); string typeName = HandleDesktopMethods.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.GetFileNameByHandle(fileHandle); action.ShouldThrow <ArgumentException>().And.HResult.Should().Be(unchecked ((int)0x80070057)); }