From 33efbf2440755f38a84b699cf86609af3dd62e51 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 20 Feb 2017 15:37:09 +0100 Subject: [PATCH] Added patch to implement various missing columns in Win32_VideoController wbemprox class. --- patches/patchinstall.sh | 22 +++++ ...figManagerErrorCode-for-Win32_VideoC.patch | 85 +++++++++++++++++++ ...Add-Status-for-Win32_VideoController.patch | 58 +++++++++++++ ...talledDisplayDrivers-for-Win32_Video.patch | 79 +++++++++++++++++ ...DriverDate-for-Win32_VideoController.patch | 58 +++++++++++++ .../wbemprox-Win32_VideoController/definition | 1 + 6 files changed, 303 insertions(+) create mode 100644 patches/wbemprox-Win32_VideoController/0001-wbemprox-Add-ConfigManagerErrorCode-for-Win32_VideoC.patch create mode 100644 patches/wbemprox-Win32_VideoController/0002-wbemprox-Add-Status-for-Win32_VideoController.patch create mode 100644 patches/wbemprox-Win32_VideoController/0003-wbemprox-Add-InstalledDisplayDrivers-for-Win32_Video.patch create mode 100644 patches/wbemprox-Win32_VideoController/0004-wbemprox-Add-DriverDate-for-Win32_VideoController.patch create mode 100644 patches/wbemprox-Win32_VideoController/definition diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index f556ba86..f909c7df 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -375,6 +375,7 @@ patch_enable_all () enable_vulkan_Vulkan_Implementation="$1" enable_wbemdisp_ISWbemSecurity="$1" enable_wbemprox_Printer="$1" + enable_wbemprox_Win32_VideoController="$1" enable_wevtapi_EvtNext="$1" enable_widl_SLTG_Typelib_Support="$1" enable_windowscodecs_32bppGrayFloat="$1" @@ -1337,6 +1338,9 @@ patch_enable () wbemprox-Printer) enable_wbemprox_Printer="$2" ;; + wbemprox-Win32_VideoController) + enable_wbemprox_Win32_VideoController="$2" + ;; wevtapi-EvtNext) enable_wevtapi_EvtNext="$2" ;; @@ -7755,6 +7759,24 @@ if test "$enable_wbemprox_Printer" -eq 1; then ) >> "$patchlist" fi +# Patchset wbemprox-Win32_VideoController +# | +# | Modified files: +# | * dlls/wbemprox/builtin.c +# | +if test "$enable_wbemprox_Win32_VideoController" -eq 1; then + patch_apply wbemprox-Win32_VideoController/0001-wbemprox-Add-ConfigManagerErrorCode-for-Win32_VideoC.patch + patch_apply wbemprox-Win32_VideoController/0002-wbemprox-Add-Status-for-Win32_VideoController.patch + patch_apply wbemprox-Win32_VideoController/0003-wbemprox-Add-InstalledDisplayDrivers-for-Win32_Video.patch + patch_apply wbemprox-Win32_VideoController/0004-wbemprox-Add-DriverDate-for-Win32_VideoController.patch + ( + printf '%s\n' '+ { "Michael Müller", "wbemprox: Add ConfigManagerErrorCode for Win32_VideoController.", 1 },'; + printf '%s\n' '+ { "Michael Müller", "wbemprox: Add Status for Win32_VideoController.", 1 },'; + printf '%s\n' '+ { "Michael Müller", "wbemprox: Add InstalledDisplayDrivers for Win32_VideoController.", 1 },'; + printf '%s\n' '+ { "Michael Müller", "wbemprox: Add DriverDate for Win32_VideoController.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wevtapi-EvtNext # | # | This patchset fixes the following Wine bugs: diff --git a/patches/wbemprox-Win32_VideoController/0001-wbemprox-Add-ConfigManagerErrorCode-for-Win32_VideoC.patch b/patches/wbemprox-Win32_VideoController/0001-wbemprox-Add-ConfigManagerErrorCode-for-Win32_VideoC.patch new file mode 100644 index 00000000..cbad7a84 --- /dev/null +++ b/patches/wbemprox-Win32_VideoController/0001-wbemprox-Add-ConfigManagerErrorCode-for-Win32_VideoC.patch @@ -0,0 +1,85 @@ +From 8941fc985e103893adbec29ad592f9f8b9dbae44 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 15 Feb 2017 05:41:23 +0100 +Subject: wbemprox: Add ConfigManagerErrorCode for Win32_VideoController. + +--- + dlls/wbemprox/builtin.c | 41 +++++++++++++++++++++++------------------ + 1 file changed, 23 insertions(+), 18 deletions(-) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index 4dd7dcd5598..a8f8851086a 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -163,6 +163,8 @@ static const WCHAR prop_codesetW[] = + {'C','o','d','e','S','e','t',0}; + static const WCHAR prop_commandlineW[] = + {'C','o','m','m','a','n','d','L','i','n','e',0}; ++static const WCHAR prop_configmanagererrorcodeW[] = ++ {'C','o','n','f','i','g','M','a','n','a','g','e','r','E','r','r','o','r','C','o','d','e',0}; + static const WCHAR prop_countrycodeW[] = + {'C','o','u','n','t','r','y','C','o','d','e',0}; + static const WCHAR prop_cpustatusW[] = +@@ -684,24 +686,25 @@ static const struct column col_systemsecurity[] = + }; + static const struct column col_videocontroller[] = + { +- { prop_adapterdactypeW, CIM_STRING }, +- { prop_adapterramW, CIM_UINT32, VT_I4 }, +- { prop_availabilityW, CIM_UINT16 }, +- { prop_captionW, CIM_STRING|COL_FLAG_DYNAMIC }, +- { prop_currentbitsperpixelW, CIM_UINT32, VT_I4 }, +- { prop_currenthorizontalresW, CIM_UINT32, VT_I4 }, +- { prop_currentrefreshrateW, CIM_UINT32, VT_I4 }, +- { prop_currentscanmodeW, CIM_UINT16, VT_I4 }, +- { prop_currentverticalresW, CIM_UINT32, VT_I4 }, +- { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, +- { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, +- { prop_driverversionW, CIM_STRING }, +- { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, +- { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, +- { prop_videoarchitectureW, CIM_UINT16, VT_I4 }, +- { prop_videomemorytypeW, CIM_UINT16, VT_I4 }, +- { prop_videomodedescriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, +- { prop_videoprocessorW, CIM_STRING|COL_FLAG_DYNAMIC } ++ { prop_adapterdactypeW, CIM_STRING }, ++ { prop_adapterramW, CIM_UINT32, VT_I4 }, ++ { prop_availabilityW, CIM_UINT16 }, ++ { prop_captionW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_configmanagererrorcodeW, CIM_UINT32, VT_I4 }, ++ { prop_currentbitsperpixelW, CIM_UINT32, VT_I4 }, ++ { prop_currenthorizontalresW, CIM_UINT32, VT_I4 }, ++ { prop_currentrefreshrateW, CIM_UINT32, VT_I4 }, ++ { prop_currentscanmodeW, CIM_UINT16, VT_I4 }, ++ { prop_currentverticalresW, CIM_UINT32, VT_I4 }, ++ { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, ++ { prop_driverversionW, CIM_STRING }, ++ { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_videoarchitectureW, CIM_UINT16, VT_I4 }, ++ { prop_videomemorytypeW, CIM_UINT16, VT_I4 }, ++ { prop_videomodedescriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_videoprocessorW, CIM_STRING|COL_FLAG_DYNAMIC }, + }; + + static const WCHAR baseboard_manufacturerW[] = +@@ -1081,6 +1084,7 @@ struct record_videocontroller + UINT32 adapter_ram; + UINT16 availability; + const WCHAR *caption; ++ UINT32 config_errorcode; + UINT32 current_bitsperpixel; + UINT32 current_horizontalres; + UINT32 current_refreshrate; +@@ -3222,6 +3226,7 @@ done: + rec->adapter_dactype = videocontroller_dactypeW; + rec->adapter_ram = vidmem; + rec->availability = 3; /* Running or Full Power */ ++ rec->config_errorcode = 0; /* no error */ + rec->caption = heap_strdupW( name ); + rec->current_bitsperpixel = get_bits_per_pixel( &hres, &vres ); + rec->current_horizontalres = hres; +-- +2.11.0 + diff --git a/patches/wbemprox-Win32_VideoController/0002-wbemprox-Add-Status-for-Win32_VideoController.patch b/patches/wbemprox-Win32_VideoController/0002-wbemprox-Add-Status-for-Win32_VideoController.patch new file mode 100644 index 00000000..1bdfb81c --- /dev/null +++ b/patches/wbemprox-Win32_VideoController/0002-wbemprox-Add-Status-for-Win32_VideoController.patch @@ -0,0 +1,58 @@ +From de0496c36ab695d0900b2056b7d6896d0ab73060 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 15 Feb 2017 05:47:40 +0100 +Subject: wbemprox: Add Status for Win32_VideoController. + +--- + dlls/wbemprox/builtin.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index a8f8851086a..eb0c1495c79 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -353,6 +353,8 @@ static const WCHAR prop_startingoffsetW[] = + {'S','t','a','r','t','i','n','g','O','f','f','s','e','t',0}; + static const WCHAR prop_stateW[] = + {'S','t','a','t','e',0}; ++static const WCHAR prop_statusW[] = ++ {'S','t','a','t','u','s',0}; + static const WCHAR prop_statusinfoW[] = + {'S','t','a','t','u','s','I','n','f','o',0}; + static const WCHAR prop_strvalueW[] = +@@ -701,6 +703,7 @@ static const struct column col_videocontroller[] = + { prop_driverversionW, CIM_STRING }, + { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, ++ { prop_statusW, CIM_STRING }, + { prop_videoarchitectureW, CIM_UINT16, VT_I4 }, + { prop_videomemorytypeW, CIM_UINT16, VT_I4 }, + { prop_videomodedescriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, +@@ -793,6 +796,8 @@ static const WCHAR videocontroller_deviceidW[] = + {'V','i','d','e','o','C','o','n','t','r','o','l','l','e','r','1',0}; + static const WCHAR videocontroller_driverversionW[] = + {'1','.','0',0}; ++static const WCHAR videocontroller_statusW[] = ++ {'O','K',0}; + + #include "pshpack1.h" + struct record_baseboard +@@ -1095,6 +1100,7 @@ struct record_videocontroller + const WCHAR *driverversion; + const WCHAR *name; + const WCHAR *pnpdevice_id; ++ const WCHAR *status; + UINT16 videoarchitecture; + UINT16 videomemorytype; + const WCHAR *videomodedescription; +@@ -3238,6 +3244,7 @@ done: + rec->driverversion = videocontroller_driverversionW; + rec->name = heap_strdupW( name ); + rec->pnpdevice_id = get_pnpdeviceid( &desc ); ++ rec->status = videocontroller_statusW; + rec->videoarchitecture = 2; /* Unknown */ + rec->videomemorytype = 2; /* Unknown */ + wsprintfW( mode, fmtW, hres, vres, (UINT64)1 << rec->current_bitsperpixel ); +-- +2.11.0 + diff --git a/patches/wbemprox-Win32_VideoController/0003-wbemprox-Add-InstalledDisplayDrivers-for-Win32_Video.patch b/patches/wbemprox-Win32_VideoController/0003-wbemprox-Add-InstalledDisplayDrivers-for-Win32_Video.patch new file mode 100644 index 00000000..05e491f1 --- /dev/null +++ b/patches/wbemprox-Win32_VideoController/0003-wbemprox-Add-InstalledDisplayDrivers-for-Win32_Video.patch @@ -0,0 +1,79 @@ +From 649bd4d7d1d114846041edfa13941864a6c2b02c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 15 Feb 2017 06:17:57 +0100 +Subject: wbemprox: Add InstalledDisplayDrivers for Win32_VideoController. + +--- + dlls/wbemprox/builtin.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index eb0c1495c79..4da7613f24b 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -241,6 +241,8 @@ static const WCHAR prop_indexW[] = + {'I','n','d','e','x',0}; + static const WCHAR prop_installdateW[] = + {'I','n','s','t','a','l','l','D','a','t','e',0}; ++static const WCHAR prop_installeddisplaydriversW[]= ++ {'I','n','s','t','a','l','l','e','d','D','i','s','p','l','a','y','D','r','i','v','e','r','s',0}; + static const WCHAR prop_interfaceindexW[] = + {'I','n','t','e','r','f','a','c','e','I','n','d','e','x',0}; + static const WCHAR prop_interfacetypeW[] = +@@ -701,6 +703,7 @@ static const struct column col_videocontroller[] = + { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, + { prop_driverversionW, CIM_STRING }, ++ { prop_installeddisplaydriversW,CIM_STRING }, + { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_statusW, CIM_STRING }, +@@ -1098,6 +1101,7 @@ struct record_videocontroller + const WCHAR *description; + const WCHAR *device_id; + const WCHAR *driverversion; ++ const WCHAR *installeddriver; + const WCHAR *name; + const WCHAR *pnpdevice_id; + const WCHAR *status; +@@ -3198,6 +3202,29 @@ static WCHAR *get_pnpdeviceid( DXGI_ADAPTER_DESC *desc ) + return ret; + } + ++#define HW_VENDOR_AMD 0x1002 ++#define HW_VENDOR_NVIDIA 0x10de ++#define HW_VENDOR_VMWARE 0x15ad ++#define HW_VENDOR_INTEL 0x8086 ++ ++static const WCHAR* get_video_driver(UINT vendorid) ++{ ++ static const WCHAR driver_amdW[] = {'a','t','i','c','f','x','3','2','.','d','l','l',0}; ++ static const WCHAR driver_intelW[] = {'i','g','d','u','m','d','i','m','3','2','.','d','l','l',0}; ++ static const WCHAR driver_nvidiaW[] = {'n','v','d','3','d','u','m','.','d','l','l',0}; ++ static const WCHAR driver_wineW[] = {'w','i','n','e','.','d','l','l',0}; ++ ++ /* FIXME: wined3d has a better table, but we can not access this information through dxgi */ ++ ++ if (vendorid == HW_VENDOR_AMD) ++ return driver_amdW; ++ else if (vendorid == HW_VENDOR_NVIDIA) ++ return driver_nvidiaW; ++ else if (vendorid == HW_VENDOR_INTEL) ++ return driver_intelW; ++ return driver_wineW; ++} ++ + static enum fill_status fill_videocontroller( struct table *table, const struct expr *cond ) + { + static const WCHAR fmtW[] = {'%','u',' ','x',' ','%','u',' ','x',' ','%','I','6','4','u',' ','c','o','l','o','r','s',0}; +@@ -3242,6 +3269,7 @@ done: + rec->description = heap_strdupW( name ); + rec->device_id = videocontroller_deviceidW; + rec->driverversion = videocontroller_driverversionW; ++ rec->installeddriver = get_video_driver( desc.VendorId ); + rec->name = heap_strdupW( name ); + rec->pnpdevice_id = get_pnpdeviceid( &desc ); + rec->status = videocontroller_statusW; +-- +2.11.0 + diff --git a/patches/wbemprox-Win32_VideoController/0004-wbemprox-Add-DriverDate-for-Win32_VideoController.patch b/patches/wbemprox-Win32_VideoController/0004-wbemprox-Add-DriverDate-for-Win32_VideoController.patch new file mode 100644 index 00000000..051cbfe8 --- /dev/null +++ b/patches/wbemprox-Win32_VideoController/0004-wbemprox-Add-DriverDate-for-Win32_VideoController.patch @@ -0,0 +1,58 @@ +From b7325b56bd63c485c58678378b549f856329bb09 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 15 Feb 2017 06:49:40 +0100 +Subject: wbemprox: Add DriverDate for Win32_VideoController. + +--- + dlls/wbemprox/builtin.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index 4da7613f24b..ffcffaa621c 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -213,6 +213,8 @@ static const WCHAR prop_domainroleW[] = + {'D','o','m','a','i','n','R','o','l','e',0}; + static const WCHAR prop_driveW[] = + {'D','r','i','v','e',0}; ++static const WCHAR prop_driverdateW[] = ++ {'D','r','i','v','e','r','D','a','t','e',0}; + static const WCHAR prop_drivernameW[] = + {'D','r','i','v','e','r','N','a','m','e',0}; + static const WCHAR prop_driverversionW[] = +@@ -702,6 +704,7 @@ static const struct column col_videocontroller[] = + { prop_currentverticalresW, CIM_UINT32, VT_I4 }, + { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, ++ { prop_driverdateW, CIM_DATETIME }, + { prop_driverversionW, CIM_STRING }, + { prop_installeddisplaydriversW,CIM_STRING }, + { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, +@@ -797,6 +800,8 @@ static const WCHAR videocontroller_dactypeW[] = + {'I','n','t','e','g','r','a','t','e','d',' ','R','A','M','D','A','C',0}; + static const WCHAR videocontroller_deviceidW[] = + {'V','i','d','e','o','C','o','n','t','r','o','l','l','e','r','1',0}; ++static const WCHAR videocontroller_driverDateW[] = ++ {'2','0','1','7','0','1','0','1','0','0','0','0','0','0','.','0','0','0','0','0','0','+','0','0','0',0}; + static const WCHAR videocontroller_driverversionW[] = + {'1','.','0',0}; + static const WCHAR videocontroller_statusW[] = +@@ -1100,6 +1105,7 @@ struct record_videocontroller + UINT32 current_verticalres; + const WCHAR *description; + const WCHAR *device_id; ++ const WCHAR *driverdate; + const WCHAR *driverversion; + const WCHAR *installeddriver; + const WCHAR *name; +@@ -3268,6 +3274,7 @@ done: + rec->current_verticalres = vres; + rec->description = heap_strdupW( name ); + rec->device_id = videocontroller_deviceidW; ++ rec->driverdate = videocontroller_driverDateW; + rec->driverversion = videocontroller_driverversionW; + rec->installeddriver = get_video_driver( desc.VendorId ); + rec->name = heap_strdupW( name ); +-- +2.11.0 + diff --git a/patches/wbemprox-Win32_VideoController/definition b/patches/wbemprox-Win32_VideoController/definition new file mode 100644 index 00000000..f18875d3 --- /dev/null +++ b/patches/wbemprox-Win32_VideoController/definition @@ -0,0 +1 @@ +Fixes: Implement various missing columns in Win32_VideoController wbemprox class