예제 #1
0
        public Guid CreateFile(uint treeId,
                               FilePipePrinterAccessMaskFlags maskFlags,
                               ShareAccessFlags shareAccess,
                               ECreateDisposition createDisposition,
                               uint createOptions,
                               string strFileName, out ulong length)
        {
            ulong       mid         = (ulong)Interlocked.Increment(ref MessageId);
            SMB2Header  sMB2Header  = new SMB2Header(ESMB2Command.CREATE, SMB2HeaderFlags.None, mid, treeId, SessionId);
            SMB2Body    sMB2Body    = new CreateRequest(maskFlags, shareAccess, createDisposition, createOptions, strFileName.GetUnicodeBytes());
            SMB2Message sMB2Message = new SMB2Message(sMB2Header, sMB2Body);

            SMBTransport.SendDatas(sMB2Message.DumpBinary());

            var sm = GetMessage(mid);

            if (sm.SMB2Header.Status == 0)
            {
                var cr = sm.SMB2Body as CreateResponse;

                length = cr.EndofFile;
                return(cr.FileId);
            }
            else
            {
                throw new Exception("CreateFile Status error:" + sm.SMB2Header.Status);
            }
        }
예제 #2
0
        public SMB2File CreateFile(
            FilePipePrinterAccessMaskFlags maskFlags,
            ShareAccessFlags shareAccess,
            ECreateDisposition createDisposition,
            uint createOptions,
            string strFileName)
        {
            var fid = SMB2Client.CreateFile(TreeId, maskFlags, shareAccess, createDisposition, createOptions, strFileName,
                                            out ulong length);

            return(new SMB2File(SMB2Client, this, strFileName, fid, length));
        }
 public static bool HasFlag(this FilePipePrinterAccessMaskFlags t, FilePipePrinterAccessMaskFlags filePipePrinterAccessMaskFlags)
 {
     if (filePipePrinterAccessMaskFlags == 0)
     {
         throw new ArgumentException("Can't be Zero");
     }
     if ((t & filePipePrinterAccessMaskFlags) == filePipePrinterAccessMaskFlags)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #4
0
 public PipeClient(string serverName, string pipeName, PipeDirection direction, string strUserName, string strPassword)
 {
     SMB2Client = new SMB2Client(serverName, strUserName, strPassword);
     PipeName   = pipeName;
     if (direction == PipeDirection.Read)
     {
         FilePipePrinterAccessMaskFlags = FilePipePrinterAccessMaskFlags.GENERIC_READ;
     }
     else if (direction == PipeDirection.Write)
     {
         FilePipePrinterAccessMaskFlags = FilePipePrinterAccessMaskFlags.GENERIC_WRITE;
     }
     else
     {
         FilePipePrinterAccessMaskFlags = FilePipePrinterAccessMaskFlags.GENERIC_READ | FilePipePrinterAccessMaskFlags.GENERIC_WRITE;
     }
 }
 public static byte[] GetBytes(this FilePipePrinterAccessMaskFlags t)
 {
     return(BitConverter.GetBytes((uint)t));
 }