# class Chef::ReservedNames::Win32::Security::ACE

### Attributes

struct[R]

### Public Class Methods

access_allowed(sid, mask, flags = 0) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 45
    def self.access_allowed(sid, mask, flags = 0)
      create_ace_with_mask_and_sid(Chef::ReservedNames::Win32::API::Security::ACCESS_ALLOWED_ACE_TYPE, flags, mask, sid)
    end

access_denied(sid, mask, flags = 0) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 49
    def self.access_denied(sid, mask, flags = 0)
      create_ace_with_mask_and_sid(Chef::ReservedNames::Win32::API::Security::ACCESS_DENIED_ACE_TYPE, flags, mask, sid)
    end

new(pointer, owner = nil) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 30
    def initialize(pointer, owner = nil)
      if Chef::ReservedNames::Win32::API::Security::ACE_WITH_MASK_AND_SID.supports?(pointer.read_uchar)
        @struct = Chef::ReservedNames::Win32::API::Security::ACE_WITH_MASK_AND_SID.new pointer
      else
        # TODO Support ALL the things
        @struct = Chef::ReservedNames::Win32::API::Security::ACE_HEADER.new pointer
      end
      # Keep a reference to the actual owner of this memory so we don't get freed
      @owner = owner
    end

size_with_sid(sid) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 41
    def self.size_with_sid(sid)
      Chef::ReservedNames::Win32::API::Security::ACE_WITH_MASK_AND_SID.offset_of(:SidStart) + sid.size
    end

### Public Instance Methods

==(other) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 55
    def ==(other)
      type == other.type && flags == other.flags && mask == other.mask && sid == other.sid
    end

dup() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 59
    def dup
      ACE.create_ace_with_mask_and_sid(type, flags, mask, sid)
    end

explicit?() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 71
    def explicit?
      ! inherited?
    end

flags() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 63
    def flags
      struct[:AceFlags]
    end

flags=(val) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 67
    def flags=(val)
      struct[:AceFlags] = val
    end

inherited?() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 75
    def inherited?
      (struct[:AceFlags] & Chef::ReservedNames::Win32::API::Security::INHERITED_ACE) != 0
    end

mask() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 79
    def mask
      struct[:Mask]
    end

mask=(val) click to toggle source

    # File lib/chef/win32/security/ace.rb, line 83
    def mask=(val)
      struct[:Mask] = val
    end

pointer() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 87
    def pointer
      struct.pointer
    end

sid() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 95
    def sid
      # The SID runs off the end of the structure, starting at :SidStart.
      # Use pointer arithmetic to get a pointer to that location.
      Chef::ReservedNames::Win32::Security::SID.new(struct.pointer + struct.offset_of(:SidStart))
    end

size() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 91
    def size
      struct[:AceSize]
    end

to_s() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 101
    def to_s
      "#{sid.account_name}/flags:#{flags.to_s(16)}/mask:#{mask.to_s(16)}"
    end

type() click to toggle source

    # File lib/chef/win32/security/ace.rb, line 105
    def type
      struct[:AceType]
    end