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); }
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); }
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); }