System.Security.AccessControl.GenericSecurityDescriptor.UnmarshalInt C# (CSharp) Method

UnmarshalInt() static private method

static private UnmarshalInt ( byte binaryForm, int offset ) : int
binaryForm byte
offset int
return int
        internal static int UnmarshalInt(byte[] binaryForm, int offset)
        {
            return (int)(
                (binaryForm[offset + 0] << 0) +
                (binaryForm[offset + 1] << 8) +
                (binaryForm[offset + 2] << 16) +
                (binaryForm[offset + 3] << 24));
        }

Usage Example

Beispiel #1
0
        /// <summary>使用指定的字节值数组初始化 <see cref="T:System.Security.AccessControl.RawSecurityDescriptor" /> 类的新实例。</summary>
        /// <param name="binaryForm">用于创建新的 <see cref="T:System.Security.AccessControl.RawSecurityDescriptor" /> 对象的字节值数组。</param>
        /// <param name="offset">
        /// <paramref name="binaryForm" /> 数组中第一个要复制的元素的偏移量。</param>
        public RawSecurityDescriptor(byte[] binaryForm, int offset)
        {
            if (binaryForm == null)
            {
                throw new ArgumentNullException("binaryForm");
            }
            if (offset < 0)
            {
                throw new ArgumentOutOfRangeException("offset", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
            }
            if (binaryForm.Length - offset < 20)
            {
                throw new ArgumentOutOfRangeException("binaryForm", Environment.GetResourceString("ArgumentOutOfRange_ArrayTooSmall"));
            }
            if ((int)binaryForm[offset + 0] != (int)GenericSecurityDescriptor.Revision)
            {
                throw new ArgumentOutOfRangeException("binaryForm", Environment.GetResourceString("AccessControl_InvalidSecurityDescriptorRevision"));
            }
            byte         num1  = binaryForm[offset + 1];
            ControlFlags flags = (ControlFlags)((int)binaryForm[offset + 2] + ((int)binaryForm[offset + 3] << 8));

            if ((flags & ControlFlags.SelfRelative) == ControlFlags.None)
            {
                throw new ArgumentException(Environment.GetResourceString("AccessControl_InvalidSecurityDescriptorSelfRelativeForm"), "binaryForm");
            }
            int num2 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 4);
            SecurityIdentifier owner = num2 == 0 ? (SecurityIdentifier)null : new SecurityIdentifier(binaryForm, offset + num2);
            int num3 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 8);
            SecurityIdentifier group = num3 == 0 ? (SecurityIdentifier)null : new SecurityIdentifier(binaryForm, offset + num3);
            int    num4             = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 12);
            RawAcl systemAcl        = (flags & ControlFlags.SystemAclPresent) == ControlFlags.None || num4 == 0 ? (RawAcl)null : new RawAcl(binaryForm, offset + num4);
            int    num5             = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 16);
            RawAcl discretionaryAcl = (flags & ControlFlags.DiscretionaryAclPresent) == ControlFlags.None || num5 == 0 ? (RawAcl)null : new RawAcl(binaryForm, offset + num5);

            this.CreateFromParts(flags, owner, group, systemAcl, discretionaryAcl);
            if ((flags & ControlFlags.RMControlValid) == ControlFlags.None)
            {
                return;
            }
            this.ResourceManagerControl = num1;
        }
All Usage Examples Of System.Security.AccessControl.GenericSecurityDescriptor::UnmarshalInt