class Chef::ReservedNames::Win32::Security::ACE
Attributes
Public Class Methods
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
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
Source
# File lib/chef/win32/security/ace.rb, line 109 def self.create_ace_with_mask_and_sid(type, flags, mask, sid) size_needed = size_with_sid(sid) pointer = FFI::MemoryPointer.new size_needed struct = Chef::ReservedNames::Win32::API::Security::ACE_WITH_MASK_AND_SID.new pointer struct[:AceType] = type struct[:AceFlags] = flags struct[:AceSize] = size_needed struct[:Mask] = mask Chef::ReservedNames::Win32::Memory.memcpy(struct.pointer + struct.offset_of(:SidStart), sid.pointer, sid.size) ACE.new(struct.pointer) end
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
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
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
Source
# File lib/chef/win32/security/ace.rb, line 59 def dup ACE.create_ace_with_mask_and_sid(type, flags, mask, sid) end
Source
# File lib/chef/win32/security/ace.rb, line 67 def flags=(val) struct[:AceFlags] = val end
Source
# File lib/chef/win32/security/ace.rb, line 75 def inherited? (struct[:AceFlags] & Chef::ReservedNames::Win32::API::Security::INHERITED_ACE) != 0 end
Source
# File lib/chef/win32/security/ace.rb, line 83 def mask=(val) struct[:Mask] = val end
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
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