Class: WinFFI::OSVERSIONINFOEX

Inherits:
FFIStruct
  • Object
show all
Includes:
Comparable
Defined in:
lib/win-ffi/structs/os_version_info_ex.rb

Instance Method Summary collapse

Methods inherited from FFIStruct

layout

Constructor Details

#initializeOSVERSIONINFOEX

Returns a new instance of OSVERSIONINFOEX.



15
16
17
18
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 15

def initialize
  super
  self[:dwOSVersionInfoSize] = size
end

Instance Method Details

#<=>(version) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 40

def <=>(version)
  hex <=> case version
          when '2000',  2000   then 0x0500
          when 'xp',    :xp    then 0x0501
          when 'vista', :vista then 0x0600
          when '7', 7;         then 0x0601
          when '8', 8;         then 0x0602
          when '8.1', 8.1;     then 0x0603
          when '10', 10;       then 0x0a00
          else raise ArgumentError, 'Unknown Version'
          end
end

#buildObject



27
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 27

def build; dwBuildNumber  end

#get!Object



20
21
22
23
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 20

def get!
  Kernel32.GetVersionExA(self)
  self
end

#hexObject



38
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 38

def hex; (major << 8) + minor end

#majorObject



25
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 25

def major; dwMajorVersion end

#major=(major) ⇒ Object



30
31
32
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 30

def major=(major)
  self.dwMajorVersion = major
end

#minorObject



26
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 26

def minor; dwMinorVersion end

#minor=(minor) ⇒ Object



34
35
36
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 34

def minor=(minor)
  self.dwMinorVersion = minor
end

#nameObject



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 55

def name
  case hex
  when 0x0500...0x0501; 'Windows 2000'
  when 0x0501...0x0600; 'Windows XP'
  when 0x0600...0x0601; 'Windows Vista'
  when 0x0601; 'Windows 7'
  when 0x0602; 'Windows 8'
  when 0x0603; 'Windows 8.1'
  when 0x0a00; 'Windows 10'
  else 'Unknown'
  end
end

#spObject



28
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 28

def sp; wServicePackMajor end

#to_sObject



68
# File 'lib/win-ffi/structs/os_version_info_ex.rb', line 68

def to_s; "#{name} v#{major}.#{minor}.#{build} SP#{sp}" end