On Mon, 2013-07-01 at 08:56 +0900, Rosen Diankov wrote: > diff -ru wine-1.6-rc3-old/dlls/wbemprox/builtin.c > wine-1.6-rc3/dlls/wbemprox/builtin.c > --- wine-1.6-rc3-old/dlls/wbemprox/builtin.c 2013-06-22 03:24:01.000000000 > +0900 > +++ wine-1.6-rc3/dlls/wbemprox/builtin.c 2013-06-27 23:04:20.170154454 > +0900
Please use git to generate patches. > @@ -168,6 +168,8 @@ > {'M','a','n','u','f','a','c','t','u','r','e','r',0}; > static const WCHAR prop_maxclockspeedW[] = > {'M','a','x','C','l','o','c','k','S','p','e','e','d',0}; > +static const WCHAR prop_currentclockspeedW[] = > + {'C','u','r','r','e','n','t','C','l','o','c','k','S','p','e','e','d',0}; Please keep properties sorted here and below. > static const WCHAR prop_memberW[] = > {'M','e','m','b','e','r',0}; > static const WCHAR prop_methodW[] = > @@ -381,6 +383,7 @@ > { prop_familyW, CIM_UINT16, VT_I4 }, > { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC }, > { prop_maxclockspeedW, CIM_UINT32, VT_I4 }, > + { prop_currentclockspeedW, CIM_UINT32, VT_I4 }, > { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, > { prop_numcoresW, CIM_UINT32, VT_I4 }, > { prop_numlogicalprocessorsW, CIM_UINT32, VT_I4 }, > @@ -633,6 +636,7 @@ > UINT16 family; > const WCHAR *manufacturer; > UINT32 maxclockspeed; > + UINT32 currentclockspeed; > const WCHAR *name; > UINT32 num_cores; > UINT32 num_logical_processors; > @@ -1690,7 +1694,33 @@ > regs_to_str( regs, 16, name + 32 ); > } > } > -static UINT get_processor_maxclockspeed( void ) > +static void get_processor_clockspeeds( UINT* maxclockspeed, UINT* > currentclockspeed ) > +{ > + PROCESSOR_POWER_INFORMATION *info; > + UINT size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); > + NTSTATUS status; > + > + if ((info = heap_alloc( size ))) > + { > + status = NtPowerInformation( ProcessorInformation, NULL, 0, info, > size ); > + if (!status) > + { > + *maxclockspeed = info[0].MaxMhz; > + *currentclockspeed = info[0].CurrentMhz; > + } > + heap_free( info ); > + } > + if( !!maxclockspeed ) > + { > + *maxclockspeed = 1000; > + } > + if( !!currentclockspeed ) > + { > + *currentclockspeed = 1000; > + } > +} You probably didn't mean to query the clock speeds and then overwrite them with static values. NULL checks are not needed in helpers like this. > +/*static UINT get_processor_maxclockspeed( void ) > { > PROCESSOR_POWER_INFORMATION *info; > UINT ret = 1000, size = get_processor_count() * > sizeof(PROCESSOR_POWER_INFORMATION); > @@ -1703,7 +1733,8 @@ > heap_free( info ); > } > return ret; > -} > +}*/ Don't comment out code. Remove it. > static const WCHAR *get_osarchitecture(void) > { > SYSTEM_INFO info; > @@ -1717,7 +1748,7 @@ > static const WCHAR fmtW[] = {'C','P','U','%','u',0}; > WCHAR device_id[14], processor_id[17], manufacturer[13], name[49] = {0}; > struct record_processor *rec; > - UINT i, offset = 0, maxclockspeed, num_cores, num_logical_processors, > count = get_processor_count(); > + UINT i, offset = 0, maxclockspeed = 0, currentclockspeed = 0, num_cores, > num_logical_processors, count = get_processor_count(); > enum fill_status status = FILL_STATUS_UNFILTERED; > > if (!resize_table( table, count, sizeof(*rec) )) return > FILL_STATUS_FAILED; > @@ -1726,7 +1757,7 @@ > get_processor_manufacturer( manufacturer ); > get_processor_name( name ); > > - maxclockspeed = get_processor_maxclockspeed(); > + get_processor_clockspeeds(&maxclockspeed, ¤tclockspeed); > num_logical_processors = get_logical_processor_count( &num_cores ) / > count; > num_cores /= count; You're not using currentclockspeed.