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
Private Class Methods
create_ace_with_mask_and_sid(type, flags, mask, sid)
click to toggle source
# File lib/chef/win32/security/ace.rb, line 111 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
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