Пример #1
0
 /// <exception cref="WinrtCifs.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;
 }
Пример #2
0
 /// <exception cref="WinrtCifs.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)
         {
             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();
     }
 }