SharpCifs.Smb.SmbComNtCreateAndX.SmbComNtCreateAndX C# (CSharp) Method

SmbComNtCreateAndX() private method

private SmbComNtCreateAndX ( string name, int flags, int access, int shareAccess, int extFileAttributes, int createOptions, ServerMessageBlock andx ) : SharpCifs.Util
name string
flags int
access int
shareAccess int
extFileAttributes int
createOptions int
andx ServerMessageBlock
return SharpCifs.Util
		internal SmbComNtCreateAndX(string name, int flags, int access, int shareAccess, 
			int extFileAttributes, int createOptions, ServerMessageBlock andx) : base(andx)
		{
			// share access specified in SmbFile
			// create disposition
			// create options
			// security flags
			Path = name;
			Command = SmbComNtCreateAndx;
			DesiredAccess = access;
            DesiredAccess |= SmbConstants.FileReadData | SmbConstants.FileReadEa | SmbConstants.FileReadAttributes;
			// extFileAttributes
			this._extFileAttributes = extFileAttributes;
			// shareAccess
			this._shareAccess = shareAccess;
			// createDisposition
			if ((flags & SmbFile.OTrunc) == SmbFile.OTrunc)
			{
				// truncate the file
				if ((flags & SmbFile.OCreat) == SmbFile.OCreat)
				{
					// create it if necessary
					_createDisposition = FileOverwriteIf;
				}
				else
				{
					_createDisposition = FileOverwrite;
				}
			}
			else
			{
				// don't truncate the file
				if ((flags & SmbFile.OCreat) == SmbFile.OCreat)
				{
					// create it if necessary
					if ((flags & SmbFile.OExcl) == SmbFile.OExcl)
					{
						// fail if already exists
						_createDisposition = FileCreate;
					}
					else
					{
						_createDisposition = FileOpenIf;
					}
				}
				else
				{
					_createDisposition = FileOpen;
				}
			}
			if ((createOptions & unchecked(0x0001)) == 0)
			{
				this._createOptions = createOptions | unchecked(0x0040);
			}
			else
			{
				this._createOptions = createOptions;
			}
			_impersonationLevel = unchecked(0x02);
			// As seen on NT :~)
			_securityFlags = unchecked(unchecked(0x03));
		}