Need help getting Win32_PNPEntity WMI class added

Luke A. Guest laguest at archeia.com
Sun Mar 2 19:37:13 CST 2014


Hi,

I thought I understood this thing, but I don't. I'm trying to get this
working so that I can work towards getting Rocksmith going.

I've added:

diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 4b02ea2..0051837 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -75,6 +75,8 @@ static const WCHAR class_paramsW[] =
     {'_','_','P','A','R','A','M','E','T','E','R','S',0};
 static const WCHAR class_physicalmediaW[] =

{'W','i','n','3','2','_','P','h','y','s','i','c','a','l','M','e','d','i','a',0};
+static const WCHAR class_pnpentityW[] =
+  {'W','i','n','3','2','_','P','N','P','E','n','t','i','t','y',0};
 static const WCHAR class_qualifiersW[] =
     {'_','_','Q','U','A','L','I','F','I','E','R','S',0};
 static const WCHAR class_process_getowner_outW[] =
@@ -394,6 +396,10 @@ static const struct column col_physicalmedia[] =
 {
     { prop_serialnumberW,       CIM_STRING }
 };
+static const struct column col_pnpentity[] =
+{
+    { prop_deviceidW,       CIM_STRING|COL_FLAG_KEY }
+};
 static const struct column col_process[] =
 {
     { prop_captionW,     CIM_STRING|COL_FLAG_DYNAMIC },
@@ -513,6 +519,8 @@ static const WCHAR diskdrive_manufacturerW[] =
     {'(','S','t','a','n','d','a','r','d',' ','d','i','s','k','
','d','r','i','v','e','s',')',0};
 static const WCHAR diskdrive_serialW[] =
     {'W','I','N','E','H','D','I','S','K',0};
+static const WCHAR pnpentity_rscableW[] =
+    {'U','S','B','\
\','V','I','D','_','1','2','B','A','&','P','I','D','_','0','0','F','F','&','R','E','V','_','0','1','0','0',0};
 static const WCHAR networkadapter_pnpdeviceidW[]=
     {'P','C','I','\
\','V','E','N','_','8','0','8','6','&','D','E','V','_','1','0','0','E','&',

'S','U','B','S','Y','S','_','0','0','1','E','8','0','8','6','&','R','E','V','_','0','2','\\',
@@ -796,6 +804,10 @@ static const struct record_physicalmedia
data_physicalmedia[] =
 {
     { diskdrive_serialW }
 };
+static const struct record_physicalmedia data_pnpentity[] =
+{
+    { pnpentity_rscableW }
+};
 static const struct record_qualifier data_qualifier[] =
 {
     { class_process_getowner_outW, param_userW, CIM_SINT32, FLAVOR_ID,
prop_idW, 0 },
@@ -2241,6 +2253,7 @@ static struct table builtin_classes[] =
     { class_osW, SIZEOF(col_os), col_os, 0, 0, NULL, fill_os },
     { class_paramsW, SIZEOF(col_param), col_param, SIZEOF(data_param),
0, (BYTE *)data_param },
     { class_physicalmediaW, SIZEOF(col_physicalmedia),
col_physicalmedia, SIZEOF(data_physicalmedia), 0, (BYTE
*)data_physicalmedia },
+    { class_pnpentityW, SIZEOF(col_pnpentity), col_pnpentity,
SIZEOF(data_pnpentity), 0, (BYTE *)data_pnpentity },
     { class_processW, SIZEOF(col_process), col_process, 0, 0, NULL,
fill_process },
     { class_processorW, SIZEOF(col_processor), col_processor, 0, 0,
NULL, fill_processor },
     { class_qualifiersW, SIZEOF(col_qualifier), col_qualifier,
SIZEOF(data_qualifier), 0, (BYTE *)data_qualifier },

With the *_pnpentity* elements being mine. I've hardcoded the USB device
hardware ID in for now. I also added a TRACE to get_propval, but that's
not being called.

Here's the relevant part of the log:

0009:trace:wbemprox:wbem_services_CreateInstanceEnum 0x3cd6b58,
L"Win32_PNPEntity", 000000000, (nil), 0x32f858
0009:trace:wbemprox:parse_query parse_query: L"SELECT * FROM
Win32_PNPEntity"
0009:trace:wbemprox:parse_query wql_parse returned 0
0009:trace:wbemprox:EnumWbemClassObject_create 0x32f858
0009:trace:wbemprox:EnumWbemClassObject_create returning iface 0x3cd6ea8
0009:trace:wbemprox:enum_class_object_Next 0x3cd6ea8, 10000, 20,
0x32f888, 0x32f864
0009:fixme:wbemprox:enum_class_object_Next timeout not supported
0009:trace:wbemprox:enum_class_object_Release destroying 0x3cd6ea8
0009:trace:wbemprox:wbem_locator_Release destroying 0x3cd6cc8
0009:trace:wbemprox:wbem_services_Release destroying 0x3cd6b58
0009:trace:wbemprox:DllGetClassObject
{4590f811-1d3a-11d0-891f-00aa004b2e24}
{00000001-0000-0000-c000-000000000046} 0x32f80c
0009:trace:wbemprox:wbemprox_cf_CreateInstance (nil)
{dc12a687-737f-11cf-884d-00aa004b2e24} 0x32f85c
0009:trace:wbemprox:WbemLocator_create (0x32f78c)
0009:trace:wbemprox:WbemLocator_create returning iface 0x3cd6b78
0009:trace:wbemprox:wbem_locator_QueryInterface 0x3cd6b78
{dc12a687-737f-11cf-884d-00aa004b2e24} 0x32f85c
0009:trace:wbemprox:wbem_locator_ConnectServer 0x3cd6b78, L"\\\\.\\root\
\cimv2", (null), (null), (null), 0x00000000, (null), (nil), 0x32f860)
0009:trace:wbemprox:WbemServices_create (0x32f860)
0009:trace:wbemprox:WbemServices_create returning iface 0x3cd6f10


Have I missed something here?

Thanks,
Luke.





More information about the wine-devel mailing list