Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
1f004b34
Commit
1f004b34
authored
Apr 02, 2015
by
Hans Leidekker
Committed by
Alexandre Julliard
Apr 03, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wbemprox: Implement more properties of Win32_Processor.
parent
db6d7dd0
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
9 deletions
+46
-9
builtin.c
dlls/wbemprox/builtin.c
+46
-9
No files found.
dlls/wbemprox/builtin.c
View file @
1f004b34
...
@@ -148,6 +148,8 @@ static const WCHAR prop_currenthorizontalresW[] =
...
@@ -148,6 +148,8 @@ static const WCHAR prop_currenthorizontalresW[] =
{
'C'
,
'u'
,
'r'
,
'r'
,
'e'
,
'n'
,
't'
,
'H'
,
'o'
,
'r'
,
'i'
,
'z'
,
'o'
,
'n'
,
't'
,
'a'
,
'l'
,
'R'
,
'e'
,
's'
,
'o'
,
'l'
,
'u'
,
't'
,
'i'
,
'o'
,
'n'
,
0
};
{
'C'
,
'u'
,
'r'
,
'r'
,
'e'
,
'n'
,
't'
,
'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_currentverticalresW
[]
=
static
const
WCHAR
prop_currentverticalresW
[]
=
{
'C'
,
'u'
,
'r'
,
'r'
,
'e'
,
'n'
,
't'
,
'V'
,
'e'
,
'r'
,
't'
,
'i'
,
'c'
,
'a'
,
'l'
,
'R'
,
'e'
,
's'
,
'o'
,
'l'
,
'u'
,
't'
,
'i'
,
'o'
,
'n'
,
0
};
{
'C'
,
'u'
,
'r'
,
'r'
,
'e'
,
'n'
,
't'
,
'V'
,
'e'
,
'r'
,
't'
,
'i'
,
'c'
,
'a'
,
'l'
,
'R'
,
'e'
,
's'
,
'o'
,
'l'
,
'u'
,
't'
,
'i'
,
'o'
,
'n'
,
0
};
static
const
WCHAR
prop_datawidthW
[]
=
{
'D'
,
'a'
,
't'
,
'a'
,
'W'
,
'i'
,
'd'
,
't'
,
'h'
,
0
};
static
const
WCHAR
prop_defaultvalueW
[]
=
static
const
WCHAR
prop_defaultvalueW
[]
=
{
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
'V'
,
'a'
,
'l'
,
'u'
,
'e'
,
0
};
{
'D'
,
'e'
,
'f'
,
'a'
,
'u'
,
'l'
,
't'
,
'V'
,
'a'
,
'l'
,
'u'
,
'e'
,
0
};
static
const
WCHAR
prop_descriptionW
[]
=
static
const
WCHAR
prop_descriptionW
[]
=
...
@@ -494,8 +496,11 @@ static const struct column col_process[] =
...
@@ -494,8 +496,11 @@ static const struct column col_process[] =
static
const
struct
column
col_processor
[]
=
static
const
struct
column
col_processor
[]
=
{
{
{
prop_addresswidthW
,
CIM_UINT16
,
VT_I4
},
{
prop_addresswidthW
,
CIM_UINT16
,
VT_I4
},
{
prop_captionW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
{
prop_cpustatusW
,
CIM_UINT16
},
{
prop_cpustatusW
,
CIM_UINT16
},
{
prop_currentclockspeedW
,
CIM_UINT32
,
VT_I4
},
{
prop_currentclockspeedW
,
CIM_UINT32
,
VT_I4
},
{
prop_datawidthW
,
CIM_UINT16
,
VT_I4
},
{
prop_descriptionW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
{
prop_deviceidW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
|
COL_FLAG_KEY
},
{
prop_deviceidW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
|
COL_FLAG_KEY
},
{
prop_familyW
,
CIM_UINT16
,
VT_I4
},
{
prop_familyW
,
CIM_UINT16
,
VT_I4
},
{
prop_manufacturerW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
{
prop_manufacturerW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
...
@@ -505,7 +510,8 @@ static const struct column col_processor[] =
...
@@ -505,7 +510,8 @@ static const struct column col_processor[] =
{
prop_numlogicalprocessorsW
,
CIM_UINT32
,
VT_I4
},
{
prop_numlogicalprocessorsW
,
CIM_UINT32
,
VT_I4
},
{
prop_processoridW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
{
prop_processoridW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
},
{
prop_processortypeW
,
CIM_UINT16
,
VT_I4
},
{
prop_processortypeW
,
CIM_UINT16
,
VT_I4
},
{
prop_uniqueidW
,
CIM_STRING
}
{
prop_uniqueidW
,
CIM_STRING
},
{
prop_versionW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
}
};
};
static
const
struct
column
col_qualifier
[]
=
static
const
struct
column
col_qualifier
[]
=
{
{
...
@@ -841,8 +847,11 @@ struct record_process
...
@@ -841,8 +847,11 @@ struct record_process
struct
record_processor
struct
record_processor
{
{
UINT16
addresswidth
;
UINT16
addresswidth
;
const
WCHAR
*
caption
;
UINT16
cpu_status
;
UINT16
cpu_status
;
UINT32
currentclockspeed
;
UINT32
currentclockspeed
;
UINT16
datawidth
;
const
WCHAR
*
description
;
const
WCHAR
*
device_id
;
const
WCHAR
*
device_id
;
UINT16
family
;
UINT16
family
;
const
WCHAR
*
manufacturer
;
const
WCHAR
*
manufacturer
;
...
@@ -853,6 +862,7 @@ struct record_processor
...
@@ -853,6 +862,7 @@ struct record_processor
const
WCHAR
*
processor_id
;
const
WCHAR
*
processor_id
;
UINT16
processortype
;
UINT16
processortype
;
const
WCHAR
*
unique_id
;
const
WCHAR
*
unique_id
;
const
WCHAR
*
version
;
};
};
struct
record_qualifier
struct
record_qualifier
{
{
...
@@ -2086,7 +2096,35 @@ static inline void do_cpuid( unsigned int ax, unsigned int *p )
...
@@ -2086,7 +2096,35 @@ static inline void do_cpuid( unsigned int ax, unsigned int *p )
#endif
#endif
#endif
#endif
}
}
static
const
WCHAR
*
get_osarchitecture
(
void
)
{
SYSTEM_INFO
info
;
GetNativeSystemInfo
(
&
info
);
if
(
info
.
u
.
s
.
wProcessorArchitecture
==
PROCESSOR_ARCHITECTURE_AMD64
)
return
os_64bitW
;
return
os_32bitW
;
}
static
void
get_processor_caption
(
WCHAR
*
caption
)
{
static
const
WCHAR
fmtW
[]
=
{
'%'
,
's'
,
' '
,
'F'
,
'a'
,
'm'
,
'i'
,
'l'
,
'y'
,
' '
,
'%'
,
'u'
,
' '
,
'M'
,
'o'
,
'd'
,
'e'
,
'l'
,
' '
,
'%'
,
'u'
,
' '
,
'S'
,
't'
,
'e'
,
'p'
,
'p'
,
'i'
,
'n'
,
'g'
,
' '
,
'%'
,
'u'
,
0
};
static
const
WCHAR
x86W
[]
=
{
'x'
,
'8'
,
'6'
,
0
};
static
const
WCHAR
intel64W
[]
=
{
'I'
,
'n'
,
't'
,
'e'
,
'l'
,
'6'
,
'4'
,
0
};
const
WCHAR
*
arch
=
(
get_osarchitecture
()
==
os_32bitW
)
?
x86W
:
intel64W
;
unsigned
int
regs
[
4
]
=
{
0
,
0
,
0
,
0
};
do_cpuid
(
1
,
regs
);
sprintfW
(
caption
,
fmtW
,
arch
,
(
regs
[
0
]
&
(
15
<<
8
))
>>
8
,
(
regs
[
0
]
&
(
15
<<
4
))
>>
4
,
regs
[
0
]
&
15
);
}
static
void
get_processor_version
(
WCHAR
*
version
)
{
static
const
WCHAR
fmtW
[]
=
{
'M'
,
'o'
,
'd'
,
'e'
,
'l'
,
' '
,
'%'
,
'u'
,
','
,
' '
,
'S'
,
't'
,
'e'
,
'p'
,
'p'
,
'i'
,
'n'
,
'g'
,
' '
,
'%'
,
'u'
,
0
};
unsigned
int
regs
[
4
]
=
{
0
,
0
,
0
,
0
};
do_cpuid
(
1
,
regs
);
sprintfW
(
version
,
fmtW
,
(
regs
[
0
]
&
(
15
<<
4
))
>>
4
,
regs
[
0
]
&
15
);
}
static
void
get_processor_id
(
WCHAR
*
processor_id
)
static
void
get_processor_id
(
WCHAR
*
processor_id
)
{
{
static
const
WCHAR
fmtW
[]
=
{
'%'
,
'0'
,
'8'
,
'X'
,
'%'
,
'0'
,
'8'
,
'X'
,
0
};
static
const
WCHAR
fmtW
[]
=
{
'%'
,
'0'
,
'8'
,
'X'
,
'%'
,
'0'
,
'8'
,
'X'
,
0
};
...
@@ -2157,27 +2195,22 @@ static UINT get_processor_maxclockspeed( UINT index )
...
@@ -2157,27 +2195,22 @@ static UINT get_processor_maxclockspeed( UINT index )
}
}
return
ret
;
return
ret
;
}
}
static
const
WCHAR
*
get_osarchitecture
(
void
)
{
SYSTEM_INFO
info
;
GetNativeSystemInfo
(
&
info
);
if
(
info
.
u
.
s
.
wProcessorArchitecture
==
PROCESSOR_ARCHITECTURE_AMD64
)
return
os_64bitW
;
return
os_32bitW
;
}
static
enum
fill_status
fill_processor
(
struct
table
*
table
,
const
struct
expr
*
cond
)
static
enum
fill_status
fill_processor
(
struct
table
*
table
,
const
struct
expr
*
cond
)
{
{
static
const
WCHAR
fmtW
[]
=
{
'C'
,
'P'
,
'U'
,
'%'
,
'u'
,
0
};
static
const
WCHAR
fmtW
[]
=
{
'C'
,
'P'
,
'U'
,
'%'
,
'u'
,
0
};
WCHAR
device_id
[
14
],
processor_id
[
17
],
manufacturer
[
13
],
name
[
49
]
=
{
0
}
;
WCHAR
caption
[
100
],
device_id
[
14
],
processor_id
[
17
],
manufacturer
[
13
],
name
[
49
]
=
{
0
},
version
[
50
]
;
struct
record_processor
*
rec
;
struct
record_processor
*
rec
;
UINT
i
,
offset
=
0
,
num_cores
,
num_logical_processors
,
count
=
get_processor_count
();
UINT
i
,
offset
=
0
,
num_cores
,
num_logical_processors
,
count
=
get_processor_count
();
enum
fill_status
status
=
FILL_STATUS_UNFILTERED
;
enum
fill_status
status
=
FILL_STATUS_UNFILTERED
;
if
(
!
resize_table
(
table
,
count
,
sizeof
(
*
rec
)
))
return
FILL_STATUS_FAILED
;
if
(
!
resize_table
(
table
,
count
,
sizeof
(
*
rec
)
))
return
FILL_STATUS_FAILED
;
get_processor_caption
(
caption
);
get_processor_id
(
processor_id
);
get_processor_id
(
processor_id
);
get_processor_manufacturer
(
manufacturer
);
get_processor_manufacturer
(
manufacturer
);
get_processor_name
(
name
);
get_processor_name
(
name
);
get_processor_version
(
version
);
num_logical_processors
=
get_logical_processor_count
(
&
num_cores
)
/
count
;
num_logical_processors
=
get_logical_processor_count
(
&
num_cores
)
/
count
;
num_cores
/=
count
;
num_cores
/=
count
;
...
@@ -2186,8 +2219,11 @@ static enum fill_status fill_processor( struct table *table, const struct expr *
...
@@ -2186,8 +2219,11 @@ static enum fill_status fill_processor( struct table *table, const struct expr *
{
{
rec
=
(
struct
record_processor
*
)(
table
->
data
+
offset
);
rec
=
(
struct
record_processor
*
)(
table
->
data
+
offset
);
rec
->
addresswidth
=
get_osarchitecture
()
==
os_32bitW
?
32
:
64
;
rec
->
addresswidth
=
get_osarchitecture
()
==
os_32bitW
?
32
:
64
;
rec
->
caption
=
heap_strdupW
(
caption
);
rec
->
cpu_status
=
1
;
/* CPU Enabled */
rec
->
cpu_status
=
1
;
/* CPU Enabled */
rec
->
currentclockspeed
=
get_processor_currentclockspeed
(
i
);
rec
->
currentclockspeed
=
get_processor_currentclockspeed
(
i
);
rec
->
datawidth
=
get_osarchitecture
()
==
os_32bitW
?
32
:
64
;
rec
->
description
=
heap_strdupW
(
caption
);
sprintfW
(
device_id
,
fmtW
,
i
);
sprintfW
(
device_id
,
fmtW
,
i
);
rec
->
device_id
=
heap_strdupW
(
device_id
);
rec
->
device_id
=
heap_strdupW
(
device_id
);
rec
->
family
=
2
;
/* Unknown */
rec
->
family
=
2
;
/* Unknown */
...
@@ -2199,6 +2235,7 @@ static enum fill_status fill_processor( struct table *table, const struct expr *
...
@@ -2199,6 +2235,7 @@ static enum fill_status fill_processor( struct table *table, const struct expr *
rec
->
processor_id
=
heap_strdupW
(
processor_id
);
rec
->
processor_id
=
heap_strdupW
(
processor_id
);
rec
->
processortype
=
3
;
/* central processor */
rec
->
processortype
=
3
;
/* central processor */
rec
->
unique_id
=
NULL
;
rec
->
unique_id
=
NULL
;
rec
->
version
=
heap_strdupW
(
version
);
if
(
!
match_row
(
table
,
i
,
cond
,
&
status
))
if
(
!
match_row
(
table
,
i
,
cond
,
&
status
))
{
{
free_row_values
(
table
,
i
);
free_row_values
(
table
,
i
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment