class Mixlibrary::Core::Utilities::WindowsArchitectureHelper
Public Class Methods
architecture()
click to toggle source
returns the architecture based on if the machine is 64 bit
# File lib/mixlibrary/core/utilities/windows_architecture_helper.rb, line 27 def self.architecture if(is_machine_64bit?) return :x86_64 else return :i386 end end
disable_wow64_file_redirection()
click to toggle source
Disables syswow redirection
# File lib/mixlibrary/core/utilities/windows_architecture_helper.rb, line 48 def self.disable_wow64_file_redirection() original_redirection_state = ['0'].pack('P') win32_wow_64_disable_wow_64_fs_redirection = ::Win32::API.new('Wow64DisableWow64FsRedirection', 'P', 'L', 'kernel32') succeeded = win32_wow_64_disable_wow_64_fs_redirection.call(original_redirection_state) if succeeded == 0 raise "Failed to disable Wow64 file redirection" end return original_redirection_state end
is_machine_64bit?()
click to toggle source
Attempts to determine if this machine is 64 bit or not in a variety of ways - using generic ruby and/or Windows
specific environment variabes
# File lib/mixlibrary/core/utilities/windows_architecture_helper.rb, line 10 def self.is_machine_64bit? if(RubyInfo.architecture==:x86_64) return true end if(ENV.has_key?('ProgramFiles(x86)')) return true; end if(ENV.has_key?('PROCESSOR_ARCHITEW6432')) return true; end return false; end
restore_wow64_file_redirection(original_redirection_state )
click to toggle source
Restore syswow redirection
# File lib/mixlibrary/core/utilities/windows_architecture_helper.rb, line 64 def self.restore_wow64_file_redirection(original_redirection_state ) win32_wow_64_revert_wow_64_fs_redirection = ::Win32::API.new('Wow64RevertWow64FsRedirection', 'P', 'L', 'kernel32') succeeded = win32_wow_64_revert_wow_64_fs_redirection.call(original_redirection_state) if succeeded == 0 raise "Failed to revert Wow64 file redirection" end end
wow64_architecture_override_required?(desired_architecture)
click to toggle source
Determines if the syswow redirection needs to be disabled based on the desired architecture.
# File lib/mixlibrary/core/utilities/windows_architecture_helper.rb, line 36 def self.wow64_architecture_override_required?(desired_architecture) #only use case we need to disable redirection is if #running as 32 bit #want 64 bit #On 64bit machine RubyInfo.architecture==:i386 && desired_architecture == :x86_64 && is_machine_64bit? end