Hans Leidekker : wbemprox: Build a PNP device ID that better matches the graphics card.
Alexandre Julliard
julliard at winehq.org
Wed Jan 30 13:43:23 CST 2013
Module: wine
Branch: master
Commit: 71f0dd6044d6d01f5d274e7fadc425116fe73722
URL: http://source.winehq.org/git/wine.git/?a=commit;h=71f0dd6044d6d01f5d274e7fadc425116fe73722
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Jan 30 16:27:22 2013 +0100
wbemprox: Build a PNP device ID that better matches the graphics card.
---
dlls/wbemprox/builtin.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 699d051..d97ca67 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -343,7 +343,7 @@ static const struct column col_videocontroller[] =
{ prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC },
{ prop_deviceidW, CIM_STRING|COL_FLAG_KEY },
{ prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC },
- { prop_pnpdeviceidW, CIM_STRING }
+ { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }
};
static const WCHAR baseboard_manufacturerW[] =
@@ -395,10 +395,6 @@ static const WCHAR sounddevice_productnameW[] =
{'W','i','n','e',' ','A','u','d','i','o',' ','D','e','v','i','c','e',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_pnpdeviceidW[] =
- {'P','C','I','\\','V','E','N','_','1','0','0','2','&','D','E','V','_','6','7','1','8','&',
- 'S','U','B','S','Y','S','_','2','2','0','1','1','4','5','8','&','R','E','V','_','0','0','\\',
- '4','&','3','8','A','C','1','8','A','C','&','0','&','0','0','0','9',0};
#include "pshpack1.h"
struct record_baseboard
@@ -1206,6 +1202,19 @@ static UINT32 get_bits_per_pixel( UINT *hres, UINT *vres )
return ret;
}
+static WCHAR *get_pnpdeviceid( DXGI_ADAPTER_DESC *desc )
+{
+ static const WCHAR fmtW[] =
+ {'P','C','I','\\','V','E','N','_','%','0','4','X','&','D','E','V','_','%','0','4','X',
+ '&','S','U','B','S','Y','S','_','%','0','8','X','&','R','E','V','_','%','0','2','X','\\',
+ '0','&','D','E','A','D','B','E','E','F','&','0','&','D','E','A','D',0};
+ WCHAR *ret;
+
+ if (!(ret = heap_alloc( sizeof(fmtW) + 2 * sizeof(WCHAR) ))) return NULL;
+ sprintfW( ret, fmtW, desc->VendorId, desc->DeviceId, desc->SubSysId, desc->Revision );
+ return ret;
+}
+
static void fill_videocontroller( struct table *table )
{
@@ -1241,7 +1250,7 @@ done:
rec->description = heap_strdupW( name );
rec->device_id = videocontroller_deviceidW;
rec->name = heap_strdupW( name );
- rec->pnpdevice_id = videocontroller_pnpdeviceidW;
+ rec->pnpdevice_id = get_pnpdeviceid( &desc );
TRACE("created 1 row\n");
table->num_rows = 1;
More information about the wine-cvs
mailing list