def self.processors(host = Socket.gethostname)
begin
wmi = WIN32OLE.connect(BASE_CS + "//#{host}/root/cimv2")
rescue WIN32OLERuntimeError => e
raise Error, e
else
wmi.InstancesOf("Win32_Processor").each{ |cpu|
yield CPUStruct.new(
cpu.AddressWidth,
self.get_cpu_arch(cpu.Architecture),
self.get_availability(cpu.Availability),
cpu.Caption,
self.get_cmec(cpu.ConfigManagerErrorCode),
cpu.ConfigManagerUserConfig,
get_status(cpu.CpuStatus),
cpu.CreationClassName,
cpu.CurrentClockSpeed,
cpu.CurrentVoltage,
cpu.DataWidth,
cpu.Description,
cpu.DeviceId,
cpu.ErrorCleared,
cpu.ErrorDescription,
cpu.ExtClock,
self.get_family(cpu.Family),
cpu.InstallDate,
cpu.L2CacheSize,
cpu.L2CacheSpeed,
cpu.LastErrorCode,
cpu.Level,
cpu.LoadPercentage,
cpu.Manufacturer,
cpu.MaxClockSpeed,
cpu.Name,
cpu.OtherFamilyDescription,
cpu.PNPDeviceID,
cpu.PowerManagementSupported,
cpu.PowerManagementCapabilities,
cpu.ProcessorId,
self.get_processor_type(cpu.ProcessorType),
cpu.Revision,
cpu.Role,
cpu.SocketDesignation,
cpu.Status,
cpu.StatusInfo,
cpu.Stepping,
cpu.SystemCreationClassName,
cpu.SystemName,
cpu.UniqueId,
self.get_upgrade_method(cpu.UpgradeMethod),
cpu.Version,
self.get_voltage_caps(cpu.VoltageCaps)
)
}
end
end