diff options
Diffstat (limited to 'Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs')
| -rw-r--r-- | Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs | 404 |
1 files changed, 201 insertions, 203 deletions
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs b/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs index d14665fe6..50650df62 100644 --- a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs +++ b/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs @@ -19,211 +19,209 @@ using SharpCifs.Util.Sharpen; namespace SharpCifs.Smb { - internal class Trans2QueryPathInformationResponse : SmbComTransactionResponse - { - internal const int SMB_QUERY_FILE_BASIC_INFO = unchecked(0x101); - - internal const int SMB_QUERY_FILE_STANDARD_INFO = unchecked(0x102); - - internal class SmbQueryFileBasicInfo : IInfo - { - internal long CreateTime; + internal class Trans2QueryPathInformationResponse : SmbComTransactionResponse + { + internal const int SMB_QUERY_FILE_BASIC_INFO = unchecked(0x101); - internal long LastAccessTime; + internal const int SMB_QUERY_FILE_STANDARD_INFO = unchecked(0x102); - internal long LastWriteTime; + internal class SmbQueryFileBasicInfo : IInfo + { + internal long CreateTime; - internal long ChangeTime; - - internal int Attributes; + internal long LastAccessTime; - // information levels - public virtual int GetAttributes() - { - return Attributes; - } - - public virtual long GetCreateTime() - { - return CreateTime; - } - - public virtual long GetLastWriteTime() - { - return LastWriteTime; - } - - public virtual long GetSize() - { - return 0L; - } - - public override string ToString() - { - return "SmbQueryFileBasicInfo[" - + "createTime=" + Extensions.CreateDate(CreateTime) - + ",lastAccessTime=" + Extensions.CreateDate(LastAccessTime) - + ",lastWriteTime=" + Extensions.CreateDate(LastWriteTime) - + ",changeTime=" + Extensions.CreateDate(ChangeTime) - + ",attributes=0x" + Hexdump.ToHexString(Attributes, 4) + "]"; - } - - internal SmbQueryFileBasicInfo(Trans2QueryPathInformationResponse enclosing) - { - this._enclosing = enclosing; - } - - private readonly Trans2QueryPathInformationResponse _enclosing; - } - - internal class SmbQueryFileStandardInfo : IInfo - { - internal long AllocationSize; - - internal long EndOfFile; - - internal int NumberOfLinks; - - internal bool DeletePending; - - internal bool Directory; - - public virtual int GetAttributes() - { - return 0; - } - - public virtual long GetCreateTime() - { - return 0L; - } - - public virtual long GetLastWriteTime() - { - return 0L; - } - - public virtual long GetSize() - { - return EndOfFile; - } - - public override string ToString() - { - return "SmbQueryInfoStandard[" - + "allocationSize=" + AllocationSize - + ",endOfFile=" + EndOfFile - + ",numberOfLinks=" + NumberOfLinks - + ",deletePending=" + DeletePending - + ",directory=" + Directory + "]"; - } - - internal SmbQueryFileStandardInfo(Trans2QueryPathInformationResponse enclosing) - { - this._enclosing = enclosing; - } - - private readonly Trans2QueryPathInformationResponse _enclosing; - } - - private int _informationLevel; - - internal IInfo Info; - - internal Trans2QueryPathInformationResponse(int informationLevel) - { - this._informationLevel = informationLevel; - SubCommand = Smb.SmbComTransaction.Trans2QueryPathInformation; - } - - internal override int WriteSetupWireFormat(byte[] dst, int dstIndex) - { - return 0; - } - - internal override int WriteParametersWireFormat(byte[] dst, int dstIndex) - { - return 0; - } - - internal override int WriteDataWireFormat(byte[] dst, int dstIndex) - { - return 0; - } - - internal override int ReadSetupWireFormat(byte[] buffer, int bufferIndex, int len) - { - return 0; - } - - internal override int ReadParametersWireFormat(byte[] buffer, - int bufferIndex, - int len) - { - // observed two zero bytes here with at least win98 - return 2; - } - - internal override int ReadDataWireFormat(byte[] buffer, int bufferIndex, int len) - { - switch (_informationLevel) - { - case SMB_QUERY_FILE_BASIC_INFO: - { - return ReadSmbQueryFileBasicInfoWireFormat(buffer, bufferIndex); - } - - case SMB_QUERY_FILE_STANDARD_INFO: - { - return ReadSmbQueryFileStandardInfoWireFormat(buffer, bufferIndex); - } - - default: - { - return 0; - } - } - } - - internal virtual int ReadSmbQueryFileStandardInfoWireFormat(byte[] buffer, - int bufferIndex) - { - int start = bufferIndex; - SmbQueryFileStandardInfo info = new SmbQueryFileStandardInfo(this); - info.AllocationSize = ReadInt8(buffer, bufferIndex); - bufferIndex += 8; - info.EndOfFile = ReadInt8(buffer, bufferIndex); - bufferIndex += 8; - info.NumberOfLinks = ReadInt4(buffer, bufferIndex); - bufferIndex += 4; - info.DeletePending = (buffer[bufferIndex++] & unchecked(0xFF)) > 0; - info.Directory = (buffer[bufferIndex++] & unchecked(0xFF)) > 0; - this.Info = info; - return bufferIndex - start; - } - - internal virtual int ReadSmbQueryFileBasicInfoWireFormat(byte[] buffer, - int bufferIndex) - { - int start = bufferIndex; - SmbQueryFileBasicInfo info = new SmbQueryFileBasicInfo(this); - info.CreateTime = ReadTime(buffer, bufferIndex); - bufferIndex += 8; - info.LastAccessTime = ReadTime(buffer, bufferIndex); - bufferIndex += 8; - info.LastWriteTime = ReadTime(buffer, bufferIndex); - bufferIndex += 8; - info.ChangeTime = ReadTime(buffer, bufferIndex); - bufferIndex += 8; - info.Attributes = ReadInt2(buffer, bufferIndex); - bufferIndex += 2; - this.Info = info; - return bufferIndex - start; - } - - public override string ToString() - { - return "Trans2QueryPathInformationResponse[" + base.ToString() + "]"; - } - } + internal long LastWriteTime; + + internal long ChangeTime; + + internal int Attributes; + + // information levels + public virtual int GetAttributes() + { + return Attributes; + } + + public virtual long GetCreateTime() + { + return CreateTime; + } + + public virtual long GetLastWriteTime() + { + return LastWriteTime; + } + + public virtual long GetSize() + { + return 0L; + } + + public override string ToString() + { + return "SmbQueryFileBasicInfo[" + "createTime=" + Extensions.CreateDate + (CreateTime) + ",lastAccessTime=" + Extensions.CreateDate(LastAccessTime + ) + ",lastWriteTime=" + Extensions.CreateDate(LastWriteTime) + ",changeTime=" + + Extensions.CreateDate(ChangeTime) + ",attributes=0x" + Hexdump.ToHexString + (Attributes, 4) + "]"; + } + + internal SmbQueryFileBasicInfo(Trans2QueryPathInformationResponse enclosing) + { + this._enclosing = enclosing; + } + + private readonly Trans2QueryPathInformationResponse _enclosing; + } + + internal class SmbQueryFileStandardInfo : IInfo + { + internal long AllocationSize; + + internal long EndOfFile; + + internal int NumberOfLinks; + + internal bool DeletePending; + + internal bool Directory; + + public virtual int GetAttributes() + { + return 0; + } + + public virtual long GetCreateTime() + { + return 0L; + } + + public virtual long GetLastWriteTime() + { + return 0L; + } + + public virtual long GetSize() + { + return EndOfFile; + } + + public override string ToString() + { + return "SmbQueryInfoStandard[" + "allocationSize=" + AllocationSize + + ",endOfFile=" + EndOfFile + ",numberOfLinks=" + NumberOfLinks + ",deletePending=" + + DeletePending + ",directory=" + Directory + "]"; + } + + internal SmbQueryFileStandardInfo(Trans2QueryPathInformationResponse enclosing) + { + this._enclosing = enclosing; + } + + private readonly Trans2QueryPathInformationResponse _enclosing; + } + + private int _informationLevel; + + internal IInfo Info; + + internal Trans2QueryPathInformationResponse(int informationLevel) + { + this._informationLevel = informationLevel; + SubCommand = Smb.SmbComTransaction.Trans2QueryPathInformation; + } + + internal override int WriteSetupWireFormat(byte[] dst, int dstIndex) + { + return 0; + } + + internal override int WriteParametersWireFormat(byte[] dst, int dstIndex) + { + return 0; + } + + internal override int WriteDataWireFormat(byte[] dst, int dstIndex) + { + return 0; + } + + internal override int ReadSetupWireFormat(byte[] buffer, int bufferIndex, int len + ) + { + return 0; + } + + internal override int ReadParametersWireFormat(byte[] buffer, int bufferIndex, int + len) + { + // observed two zero bytes here with at least win98 + return 2; + } + + internal override int ReadDataWireFormat(byte[] buffer, int bufferIndex, int len) + { + switch (_informationLevel) + { + case SMB_QUERY_FILE_BASIC_INFO: + { + return ReadSmbQueryFileBasicInfoWireFormat(buffer, bufferIndex); + } + + case SMB_QUERY_FILE_STANDARD_INFO: + { + return ReadSmbQueryFileStandardInfoWireFormat(buffer, bufferIndex); + } + + default: + { + return 0; + } + } + } + + internal virtual int ReadSmbQueryFileStandardInfoWireFormat(byte[] buffer, int bufferIndex + ) + { + int start = bufferIndex; + SmbQueryFileStandardInfo info = new SmbQueryFileStandardInfo + (this); + info.AllocationSize = ReadInt8(buffer, bufferIndex); + bufferIndex += 8; + info.EndOfFile = ReadInt8(buffer, bufferIndex); + bufferIndex += 8; + info.NumberOfLinks = ReadInt4(buffer, bufferIndex); + bufferIndex += 4; + info.DeletePending = (buffer[bufferIndex++] & unchecked(0xFF)) > 0; + info.Directory = (buffer[bufferIndex++] & unchecked(0xFF)) > 0; + this.Info = info; + return bufferIndex - start; + } + + internal virtual int ReadSmbQueryFileBasicInfoWireFormat(byte[] buffer, int bufferIndex + ) + { + int start = bufferIndex; + SmbQueryFileBasicInfo info = new SmbQueryFileBasicInfo + (this); + info.CreateTime = ReadTime(buffer, bufferIndex); + bufferIndex += 8; + info.LastAccessTime = ReadTime(buffer, bufferIndex); + bufferIndex += 8; + info.LastWriteTime = ReadTime(buffer, bufferIndex); + bufferIndex += 8; + info.ChangeTime = ReadTime(buffer, bufferIndex); + bufferIndex += 8; + info.Attributes = ReadInt2(buffer, bufferIndex); + bufferIndex += 2; + this.Info = info; + return bufferIndex - start; + } + + public override string ToString() + { + return "Trans2QueryPathInformationResponse[" + base.ToString() + "]"; + } + } } |
