[PATCH] wbemprox: Implement Win32_QuickFixEngineering.
Hans Leidekker
hans at codeweavers.com
Mon Sep 30 10:12:58 CDT 2019
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47755
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
dlls/wbemprox/builtin.c | 23 +++++++++++++++++++
dlls/wbemprox/tests/query.c | 44 +++++++++++++++++++++++++++++++++++++
2 files changed, 67 insertions(+)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 2aca2f8693..96d1e0b850 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -111,6 +111,8 @@ static const WCHAR class_processor2W[] =
{'C','I','M','_','P','r','o','c','e','s','s','o','r',0};
static const WCHAR class_qualifiersW[] =
{'_','_','Q','U','A','L','I','F','I','E','R','S',0};
+static const WCHAR class_quickfixengineeringW[] =
+ {'W','i','n','3','2','_','Q','u','i','c','k','F','i','x','E','n','g','i','n','e','e','r','i','n','g',0};
static const WCHAR class_sidW[] =
{'W','i','n','3','2','_','S','I','D',0};
static const WCHAR class_sounddeviceW[] =
@@ -268,6 +270,8 @@ static const WCHAR prop_graphicsscoreW[] =
{'G','r','a','p','h','i','c','s','S','c','o','r','e',0};
static const WCHAR prop_horizontalresolutionW[] =
{'H','o','r','i','z','o','n','t','a','l','R','e','s','o','l','u','t','i','o','n',0};
+static const WCHAR prop_hotfixidW[] =
+ {'H','o','t','F','i','x','I','D',0};
static const WCHAR prop_idW[] =
{'I','D',0};
static const WCHAR prop_identificationcodeW[] =
@@ -754,6 +758,11 @@ static const struct column col_qualifier[] =
{ prop_strvalueW, CIM_STRING },
{ prop_boolvalueW, CIM_BOOLEAN }
};
+static const struct column col_quickfixengineering[] =
+{
+ { prop_captionW, CIM_STRING },
+ { prop_hotfixidW, CIM_STRING|COL_FLAG_KEY }
+};
static const struct column col_service[] =
{
{ prop_acceptpauseW, CIM_BOOLEAN },
@@ -920,6 +929,10 @@ static const WCHAR os_serialnumberW[] =
{'1','2','3','4','5','-','O','E','M','-','1','2','3','4','5','6','7','-','1','2','3','4','5',0};
static const WCHAR physicalmedia_tagW[] =
{'\\','\\','.','\\','P','H','Y','S','I','C','A','L','D','R','I','V','E','0',0};
+static const WCHAR quickfixengineering_captionW[] =
+ {'h','t','t','p',':','/','/','w','i','n','e','h','q','.','o','r','g',0};
+static const WCHAR quickfixengineering_hotfixidW[] =
+ {'K','B','1','2','3','4','5','6','7',0};
static const WCHAR sounddevice_productnameW[] =
{'W','i','n','e',' ','A','u','d','i','o',' ','D','e','v','i','c','e',0};
static const WCHAR systemenclosure_systemenclosureW[] =
@@ -1224,6 +1237,11 @@ struct record_qualifier
const WCHAR *strvalue;
int boolvalue;
};
+struct record_quickfixengineering
+{
+ const WCHAR *caption;
+ const WCHAR *hotfixid;
+};
struct record_service
{
int accept_pause;
@@ -1364,6 +1382,10 @@ static const struct record_qualifier data_qualifier[] =
{ class_process_getowner_outW, param_userW, CIM_SINT32, FLAVOR_ID, prop_idW, 0 },
{ class_process_getowner_outW, param_domainW, CIM_SINT32, FLAVOR_ID, prop_idW, 1 }
};
+static const struct record_quickfixengineering data_quickfixengineering[] =
+{
+ { quickfixengineering_captionW, quickfixengineering_hotfixidW },
+};
static const struct record_sounddevice data_sounddevice[] =
{
{ sounddevice_productnameW, sounddevice_productnameW, 3 /* enabled */ }
@@ -4443,6 +4465,7 @@ static struct table builtin_classes[] =
{ class_processorW, C(col_processor), 0, 0, NULL, fill_processor },
{ class_processor2W, C(col_processor), 0, 0, NULL, fill_processor },
{ class_qualifiersW, C(col_qualifier), D(data_qualifier) },
+ { class_quickfixengineeringW, C(col_quickfixengineering), D(data_quickfixengineering) },
{ class_serviceW, C(col_service), 0, 0, NULL, fill_service },
{ class_sidW, C(col_sid), 0, 0, NULL, fill_sid },
{ class_sounddeviceW, C(col_sounddevice), D(data_sounddevice) },
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
index ee4eac88e9..cdbbc02820 100644
--- a/dlls/wbemprox/tests/query.c
+++ b/dlls/wbemprox/tests/query.c
@@ -1756,6 +1756,49 @@ static void test_Win32_DisplayControllerConfiguration( IWbemServices *services )
SysFreeString( wql );
}
+static void test_Win32_QuickFixEngineering( IWbemServices *services )
+{
+ static const WCHAR captionW[] =
+ {'C','a','p','t','i','o','n',0};
+ static const WCHAR hotfixidW[] =
+ {'H','o','t','F','i','x','I','D',0};
+ static const WCHAR queryW[] =
+ {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','W','i','n','3','2','_',
+ 'Q','u','i','c','k','F','i','x','E','n','g','i','n','e','e','r','i','n','g',0};
+ BSTR wql = SysAllocString( wqlW ), query = SysAllocString( queryW );
+ IEnumWbemClassObject *result;
+ IWbemClassObject *obj;
+ HRESULT hr;
+ DWORD count, total = 0;
+ VARIANT caption;
+ CIMTYPE type;
+
+ hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ for (;;)
+ {
+ hr = IEnumWbemClassObject_Next( result, 10000, 1, &obj, &count );
+ if (hr != S_OK) break;
+
+ type = 0xdeadbeef;
+ VariantInit( &caption );
+ hr = IWbemClassObject_Get( obj, captionW, 0, &caption, &type, NULL );
+ ok( hr == S_OK, "failed to get caption %08x\n", hr );
+ ok( V_VT( &caption ) == VT_BSTR || V_VT( &caption ) == VT_NULL /* winxp */,
+ "unexpected variant type 0x%x\n", V_VT( &caption ) );
+ ok( type == CIM_STRING, "unexpected type 0x%x\n", type );
+
+ check_property( obj, hotfixidW, VT_BSTR, CIM_STRING );
+ IWbemClassObject_Release( obj );
+ if (total++ >= 10) break;
+ }
+
+ IEnumWbemClassObject_Release( result );
+ SysFreeString( query );
+ SysFreeString( wql );
+}
+
START_TEST(query)
{
static const WCHAR cimv2W[] = {'R','O','O','T','\\','C','I','M','V','2',0};
@@ -1804,6 +1847,7 @@ START_TEST(query)
test_Win32_Process( services, FALSE );
test_Win32_Process( services, TRUE );
test_Win32_Processor( services );
+ test_Win32_QuickFixEngineering( services );
test_Win32_Service( services );
test_Win32_SystemEnclosure( services );
test_Win32_VideoController( services );
--
2.20.1
More information about the wine-devel
mailing list