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); } }
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 ShareAccessFlags t, ShareAccessFlags sMB2HeaderFlags) { if (sMB2HeaderFlags == 0) { throw new ArgumentException("Can't be Zero"); } if ((t & sMB2HeaderFlags) == sMB2HeaderFlags) { return(true); } else { return(false); } }
public static extern UInt32 ZwCreateFile(IntPtr ptr_to_FileHandle, AccessRightsFlags DesiredAccess, IntPtr ObjectAttributes, IntPtr IoStatusBlock, Int32 AllocationSize, Int32 FileAttributes, ShareAccessFlags ShareAccess, Int32 CreateDisposition, FileCreationFlags CreateOptions, IntPtr EaBuffer, Int32 EaLength);
public static byte[] GetBytes(this ShareAccessFlags t) { return(BitConverter.GetBytes((uint)t)); }