class Facter::Resolvers::Kernel

Private Class Methods

build_facts_list(result) click to toggle source
# File lib/facter/resolvers/windows/kernel.rb, line 35
def build_facts_list(result)
  @fact_list[:kernelversion] = "#{result[:major]}.#{result[:minor]}.#{result[:build]}"
  @fact_list[:kernelmajorversion] = "#{result[:major]}.#{result[:minor]}"
  @fact_list[:kernel] = 'windows'
end
post_resolve(fact_name, _options) click to toggle source
# File lib/facter/resolvers/windows/kernel.rb, line 13
def post_resolve(fact_name, _options)
  @fact_list.fetch(fact_name) { read_os_version_information(fact_name) }
end
read_os_version_information(fact_name) click to toggle source
# File lib/facter/resolvers/windows/kernel.rb, line 17
def read_os_version_information(fact_name)
  require_relative '../../../facter/resolvers/windows/ffi/kernel_ffi'

  ver_ptr = FFI::MemoryPointer.new(OsVersionInfoEx.size)
  ver = OsVersionInfoEx.new(ver_ptr)
  ver[:dwOSVersionInfoSize] = OsVersionInfoEx.size

  if KernelFFI::RtlGetVersion(ver_ptr) != KernelFFI::STATUS_SUCCESS
    @log.debug 'Calling Windows RtlGetVersion failed'
    return
  end

  result = { major: ver[:dwMajorVersion], minor: ver[:dwMinorVersion], build: ver[:dwBuildNumber] }
  build_facts_list(result)

  @fact_list[fact_name]
end