Пример #1
0
        private static OpenAndXResponseExtended CreateResponseExtendedFromFileSystemEntry(FileSystemEntry entry, ushort fileID, OpenResult openResult)
        {
            OpenAndXResponseExtended response = new OpenAndXResponseExtended();

            if (entry.IsDirectory)
            {
                response.FileAttrs = SMBLibrary.SMB1.FileAttributes.Directory;
            }
            else
            {
                response.FileAttrs = SMBLibrary.SMB1.FileAttributes.Normal;
            }
            response.FID                      = fileID;
            response.LastWriteTime            = entry.LastWriteTime;
            response.FileDataSize             = (uint)Math.Min(UInt32.MaxValue, entry.Size);
            response.AccessRights             = AccessRights.SMB_DA_ACCESS_READ;
            response.ResourceType             = ResourceType.FileTypeDisk;
            response.OpenResults.OpenResult   = openResult;
            response.MaximalAccessRights.File = FileAccessMask.FILE_READ_DATA | FileAccessMask.FILE_WRITE_DATA | FileAccessMask.FILE_APPEND_DATA |
                                                FileAccessMask.FILE_READ_EA | FileAccessMask.FILE_WRITE_EA |
                                                FileAccessMask.FILE_EXECUTE |
                                                FileAccessMask.FILE_READ_ATTRIBUTES | FileAccessMask.FILE_WRITE_ATTRIBUTES |
                                                FileAccessMask.DELETE | FileAccessMask.READ_CONTROL | FileAccessMask.WRITE_DAC | FileAccessMask.WRITE_OWNER | FileAccessMask.SYNCHRONIZE;
            response.GuestMaximalAccessRights.File = FileAccessMask.FILE_READ_DATA | FileAccessMask.FILE_WRITE_DATA |
                                                     FileAccessMask.FILE_READ_EA | FileAccessMask.FILE_WRITE_EA |
                                                     FileAccessMask.FILE_READ_ATTRIBUTES | FileAccessMask.FILE_WRITE_ATTRIBUTES |
                                                     FileAccessMask.READ_CONTROL | FileAccessMask.SYNCHRONIZE;
            return(response);
        }
Пример #2
0
        private static OpenAndXResponseExtended CreateResponseExtendedForNamedPipe(ushort fileID)
        {
            OpenAndXResponseExtended response = new OpenAndXResponseExtended();

            response.FID                        = fileID;
            response.AccessRights               = AccessRights.SMB_DA_ACCESS_READ_WRITE;
            response.ResourceType               = ResourceType.FileTypeMessageModePipe;
            response.NMPipeStatus.ICount        = 255;
            response.NMPipeStatus.ReadMode      = ReadMode.MessageMode;
            response.NMPipeStatus.NamedPipeType = NamedPipeType.MessageNodePipe;
            return(response);
        }
Пример #3
0
        private static OpenAndXResponseExtended CreateResponseExtendedFromFileInfo(FileNetworkOpenInformation fileInfo, ushort fileID, OpenResult openResult)
        {
            OpenAndXResponseExtended response = new OpenAndXResponseExtended();

            response.FID                    = fileID;
            response.FileAttrs              = SMB1FileStoreHelper.GetFileAttributes(fileInfo.FileAttributes);
            response.LastWriteTime          = fileInfo.LastWriteTime;
            response.FileDataSize           = (uint)Math.Min(UInt32.MaxValue, fileInfo.EndOfFile);
            response.AccessRights           = AccessRights.SMB_DA_ACCESS_READ;
            response.ResourceType           = ResourceType.FileTypeDisk;
            response.OpenResults.OpenResult = openResult;
            response.MaximalAccessRights    = (AccessMask)(FileAccessMask.FILE_READ_DATA | FileAccessMask.FILE_WRITE_DATA | FileAccessMask.FILE_APPEND_DATA |
                                                           FileAccessMask.FILE_READ_EA | FileAccessMask.FILE_WRITE_EA |
                                                           FileAccessMask.FILE_EXECUTE |
                                                           FileAccessMask.FILE_READ_ATTRIBUTES | FileAccessMask.FILE_WRITE_ATTRIBUTES) |
                                              AccessMask.DELETE | AccessMask.READ_CONTROL | AccessMask.WRITE_DAC | AccessMask.WRITE_OWNER | AccessMask.SYNCHRONIZE;
            response.GuestMaximalAccessRights = (AccessMask)(FileAccessMask.FILE_READ_DATA | FileAccessMask.FILE_WRITE_DATA |
                                                             FileAccessMask.FILE_READ_EA | FileAccessMask.FILE_WRITE_EA |
                                                             FileAccessMask.FILE_READ_ATTRIBUTES | FileAccessMask.FILE_WRITE_ATTRIBUTES) |
                                                AccessMask.READ_CONTROL | AccessMask.SYNCHRONIZE;
            return(response);
        }