Sha256: 5ddfafadd679014cf6c7b77f3d5a9c548129e6e5045e0b3f3d90943b447e06d2

Contents?: true

Size: 1.27 KB

Versions: 22

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Facter
  module Resolvers
    class Kernel < BaseResolver
      @log = Facter::Log.new(self)
      @semaphore = Mutex.new
      @fact_list ||= {}
      class << self
        private

        def post_resolve(fact_name)
          @fact_list.fetch(fact_name) { read_os_version_information(fact_name) }
        end

        def read_os_version_information(fact_name)
          require "#{ROOT_DIR}/lib/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

        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
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
facter-4.0.29 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.28 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.26 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.25 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.24 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.23 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.22 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.21 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.20 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.19 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.18 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.17 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.16 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.15 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.14 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.13 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.12 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.11 lib/resolvers/windows/kernel_resolver.rb
facter-4.0.10.pre lib/resolvers/windows/kernel_resolver.rb
facter-4.0.9.pre lib/resolvers/windows/kernel_resolver.rb