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");
            });
        }
Example #2
0
        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(@"\");
        }
Example #3
0
        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));
        }