Inheritance: AndXServerMessageBlock
 /// <exception cref="SharpCifs.Smb.SmbException"></exception>
 /// <exception cref="System.UriFormatException"></exception>
 /// <exception cref="UnknownHostException"></exception>
 public SmbRandomAccessFile(SmbFile file, string mode)
 {
     this._file = file;
     if (mode.Equals("r"))
     {
         _openFlags = SmbFile.OCreat | SmbFile.ORdonly;
     }
     else
     {
         if (mode.Equals("rw"))
         {
             _openFlags     = SmbFile.OCreat | SmbFile.ORdwr | SmbFile.OAppend;
             _writeAndxResp = new SmbComWriteAndXResponse();
             _options       = WriteOptions;
             _access        = SmbConstants.FileReadData | SmbConstants.FileWriteData;
         }
         else
         {
             throw new ArgumentException("Invalid mode");
         }
     }
     file.Open(_openFlags, _access, SmbFile.AttrNormal, _options);
     _readSize  = file.Tree.Session.transport.RcvBufSize - 70;
     _writeSize = file.Tree.Session.transport.SndBufSize - 70;
     _fp        = 0L;
 }
		/// <exception cref="SharpCifs.Smb.SmbException"></exception>
		/// <exception cref="System.UriFormatException"></exception>
		/// <exception cref="UnknownHostException"></exception>
		public SmbRandomAccessFile(SmbFile file, string mode)
		{
			this._file = file;
			if (mode.Equals("r"))
			{
				_openFlags = SmbFile.OCreat | SmbFile.ORdonly;
			}
			else
			{
				if (mode.Equals("rw"))
				{
					_openFlags = SmbFile.OCreat | SmbFile.ORdwr | SmbFile.OAppend;
					_writeAndxResp = new SmbComWriteAndXResponse();
					_options = WriteOptions;
					_access = SmbConstants.FileReadData | SmbConstants.FileWriteData;
				}
				else
				{
					throw new ArgumentException("Invalid mode");
				}
			}
			file.Open(_openFlags, _access, SmbFile.AttrNormal, _options);
			_readSize = file.Tree.Session.transport.RcvBufSize - 70;
			_writeSize = file.Tree.Session.transport.SndBufSize - 70;
			_fp = 0L;
		}
 /// <exception cref="SharpCifs.Smb.SmbException"></exception>
 /// <exception cref="System.UriFormatException"></exception>
 /// <exception cref="UnknownHostException"></exception>
 internal SmbFileOutputStream(SmbFile file, bool append, int openFlags)
 {
     this._file      = file;
     this._append    = append;
     this._openFlags = openFlags;
     _access         = ((int)(((uint)openFlags) >> 16)) & 0xFFFF;
     if (append)
     {
         try
         {
             _fp = file.Length();
         }
         catch (SmbAuthException sae)
         {
             throw;
         }
         catch (SmbException)
         {
             _fp = 0L;
         }
     }
     if (file is SmbNamedPipe && file.Unc.StartsWith("\\pipe\\"))
     {
         file.Unc = Runtime.Substring(file.Unc, 5);
         file.Send(new TransWaitNamedPipe("\\pipe" + file.Unc),
                   new TransWaitNamedPipeResponse());
     }
     file.Open(openFlags,
               _access | SmbConstants.FileWriteData,
               SmbFile.AttrNormal,
               0);
     this._openFlags &= ~(SmbFile.OCreat | SmbFile.OTrunc);
     _writeSize       = file.Tree.Session.transport.SndBufSize - 70;
     _useNtSmbs       = file.Tree.Session.transport.HasCapability(SmbConstants.CapNtSmbs);
     if (_useNtSmbs)
     {
         _reqx = new SmbComWriteAndX();
         _rspx = new SmbComWriteAndXResponse();
     }
     else
     {
         _req = new SmbComWrite();
         _rsp = new SmbComWriteResponse();
     }
 }
		/// <exception cref="SharpCifs.Smb.SmbException"></exception>
		/// <exception cref="System.UriFormatException"></exception>
		/// <exception cref="UnknownHostException"></exception>
		internal SmbFileOutputStream(SmbFile file, bool append, int openFlags)
		{
			this._file = file;
			this._append = append;
			this._openFlags = openFlags;
			_access = ((int)(((uint)openFlags) >> 16)) & 0xFFFF;
			if (append)
			{
				try
				{
					_fp = file.Length();
				}
				catch (SmbAuthException sae)
				{
					throw;
				}
				catch (SmbException)
				{
					_fp = 0L;
				}
			}
			if (file is SmbNamedPipe && file.Unc.StartsWith("\\pipe\\"))
			{
				file.Unc = Runtime.Substring(file.Unc, 5);
				file.Send(new TransWaitNamedPipe("\\pipe" + file.Unc), new TransWaitNamedPipeResponse
					());
			}
			file.Open(openFlags, _access | SmbConstants.FileWriteData, SmbFile.AttrNormal, 
				0);
			this._openFlags &= ~(SmbFile.OCreat | SmbFile.OTrunc);
			_writeSize = file.Tree.Session.transport.SndBufSize - 70;
			_useNtSmbs = file.Tree.Session.transport.HasCapability(SmbConstants.CapNtSmbs
				);
			if (_useNtSmbs)
			{
				_reqx = new SmbComWriteAndX();
				_rspx = new SmbComWriteAndXResponse();
			}
			else
			{
				_req = new SmbComWrite();
				_rsp = new SmbComWriteResponse();
			}
		}