# File lib/facter/util/windows/process.rb, line 104
  def os_version(&block)
    FFI::MemoryPointer.new(OSVERSIONINFOEX.size) do |ver_ptr|
      ver = OSVERSIONINFOEX.new(ver_ptr)
      ver[:dwOSVersionInfoSize] = OSVERSIONINFOEX.size

      result = RtlGetVersion(ver_ptr)

      if result != STATUS_SUCCESS
        raise RuntimeError, 'Calling Windows RtlGetVersion failed'
      end

      yield ver
    end

    # ver_ptr has already had free called, so nothing to return

    nil
  end