wbemprox: Added MaxClockSpeed and NumberOfLogicalProcessors builtin properties.
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 8f2335b..19afa0c 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -163,6 +163,10 @@
     {'T','o','t','a','l','P','h','y','s','i','c','a','l','M','e','m','o','r','y',0};
 static const WCHAR prop_typeW[] =
     {'T','y','p','e',0};
+static const WCHAR prop_maxclockspeedW[] =
+    {'M','a','x','C','l','o','c','k','S','p','e','e','d',0};
+static const WCHAR prop_numberoflogicalprocessorsW[] =
+    {'N','u','m','b','e','r','O','f','L','o','g','i','c','a','l','P','r','o','c','e','s','s','o','r','s',0};
 
 static const WCHAR method_enumkeyW[] =
     {'E','n','u','m','K','e','y',0};
@@ -249,11 +253,13 @@
 };
 static const struct column col_processor[] =
 {
-    { prop_cpustatusW,    CIM_UINT16 },
-    { prop_deviceidW,     CIM_STRING|COL_FLAG_DYNAMIC|COL_FLAG_KEY },
-    { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC },
-    { prop_nameW,         CIM_STRING|COL_FLAG_DYNAMIC },
-    { prop_processoridW,  CIM_STRING|COL_FLAG_DYNAMIC }
+    { prop_cpustatusW,                 CIM_UINT16 },
+    { prop_deviceidW,                  CIM_STRING|COL_FLAG_DYNAMIC|COL_FLAG_KEY },
+    { prop_manufacturerW,              CIM_STRING|COL_FLAG_DYNAMIC },
+    { prop_maxclockspeedW,             CIM_UINT32 },
+    { prop_nameW,                      CIM_STRING|COL_FLAG_DYNAMIC },
+    { prop_numberoflogicalprocessorsW, CIM_UINT32 },
+    { prop_processoridW,               CIM_STRING|COL_FLAG_DYNAMIC }
 };
 static const struct column col_service[] =
 {
@@ -390,7 +396,9 @@
     UINT16       cpu_status;
     const WCHAR *device_id;
     const WCHAR *manufacturer;
+    UINT32       maxclockspeed;
     const WCHAR *name;
+    UINT32       numberoflogicalprocessors;
     const WCHAR *processor_id;
 };
 struct record_service
@@ -747,7 +755,8 @@
     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, count = get_processor_count();
+    UINT i, offset = 0, count = get_processor_count(), cpuMhz;
+    PROCESSOR_POWER_INFORMATION ppi;
 
     if (!(table->data = heap_alloc( sizeof(*rec) * count ))) return;
 
@@ -755,6 +764,11 @@
     get_processor_manufacturer( manufacturer );
     get_processor_name( name );
 
+    if(!NtPowerInformation(ProcessorInformation, NULL, 0, &ppi, sizeof(ppi)))
+        cpuMhz = ppi.MaxMhz;
+    else
+        cpuMhz = 1000000;
+
     for (i = 0; i < count; i++)
     {
         rec = (struct record_processor *)(table->data + offset);
@@ -762,7 +776,9 @@
         sprintfW( device_id, fmtW, i );
         rec->device_id    = heap_strdupW( device_id );
         rec->manufacturer = heap_strdupW( manufacturer );
+        rec->maxclockspeed = cpuMhz;
         rec->name         = heap_strdupW( name );
+        rec->numberoflogicalprocessors = count;
         rec->processor_id = heap_strdupW( processor_id );
         offset += sizeof(*rec);
     }