Class: FFI::Pointer

Inherits:
Object
  • Object
show all
Defined in:
lib/facter/resolvers/windows/ffi/ffi.rb

Instance Method Summary collapse

Instance Method Details

#read_wide_string_with_length(char_length) ⇒ Object



30
31
32
33
34
# File 'lib/facter/resolvers/windows/ffi/ffi.rb', line 30

def read_wide_string_with_length(char_length)
  # char_length is number of wide chars (typically excluding NULLs), *not* bytes
  str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
  str.encode('UTF-8', str.encoding, {})
end

#read_wide_string_without_lengthObject



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/facter/resolvers/windows/ffi/ffi.rb', line 36

def read_wide_string_without_length
  wide_character = get_bytes(0, 2)
  i = 2
  str = []

  while wide_character.encode('UTF-16LE') != END_OF_WCHAR_STRING
    str << wide_character
    wide_character = get_bytes(i, 2)
    i += 2
  end
  str.join.force_encoding('UTF-16LE').encode('UTF-8')
end

#read_win32_boolObject



49
50
51
52
53
# File 'lib/facter/resolvers/windows/ffi/ffi.rb', line 49

def read_win32_bool
  # BOOL is always a 32-bit integer in Win32
  # some Win32 APIs return 1 for true, while others are non-0
  read_int32 != WIN32FALSE
end