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
c4309a50
Commit
c4309a50
authored
Apr 03, 2014
by
Hans Leidekker
Committed by
Alexandre Julliard
Apr 03, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wbemprox: Implement more properties of Win32_DiskDrive.
parent
b67bfbb8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
82 additions
and
26 deletions
+82
-26
builtin.c
dlls/wbemprox/builtin.c
+82
-26
No files found.
dlls/wbemprox/builtin.c
View file @
c4309a50
...
...
@@ -171,6 +171,8 @@ static const WCHAR prop_installdateW[] =
{
'I'
,
'n'
,
's'
,
't'
,
'a'
,
'l'
,
'l'
,
'D'
,
'a'
,
't'
,
'e'
,
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
[]
=
{
'I'
,
'n'
,
't'
,
'e'
,
'r'
,
'f'
,
'a'
,
'c'
,
'e'
,
'T'
,
'y'
,
'p'
,
'e'
,
0
};
static
const
WCHAR
prop_intvalueW
[]
=
{
'I'
,
'n'
,
't'
,
'e'
,
'g'
,
'e'
,
'r'
,
'V'
,
'a'
,
'l'
,
'u'
,
'e'
,
0
};
static
const
WCHAR
prop_ipconnectionmetricW
[]
=
...
...
@@ -324,12 +326,14 @@ static const struct column col_directory[] =
};
static
const
struct
column
col_diskdrive
[]
=
{
{
prop_deviceidW
,
CIM_STRING
|
COL_FLAG_KEY
},
{
prop_indexW
,
CIM_UINT32
,
VT_I4
},
{
prop_manufacturerW
,
CIM_STRING
},
{
prop_mediatypeW
,
CIM_STRING
},
{
prop_modelW
,
CIM_STRING
},
{
prop_serialnumberW
,
CIM_STRING
}
{
prop_deviceidW
,
CIM_STRING
|
COL_FLAG_DYNAMIC
|
COL_FLAG_KEY
},
{
prop_indexW
,
CIM_UINT32
,
VT_I4
},
{
prop_interfacetypeW
,
CIM_STRING
},
{
prop_manufacturerW
,
CIM_STRING
},
{
prop_mediatypeW
,
CIM_STRING
},
{
prop_modelW
,
CIM_STRING
},
{
prop_serialnumberW
,
CIM_STRING
},
{
prop_sizeW
,
CIM_UINT64
}
};
static
const
struct
column
col_diskpartition
[]
=
{
...
...
@@ -527,12 +531,14 @@ static const WCHAR compsys_manufacturerW[] =
{
'T'
,
'h'
,
'e'
,
' '
,
'W'
,
'i'
,
'n'
,
'e'
,
' '
,
'P'
,
'r'
,
'o'
,
'j'
,
'e'
,
'c'
,
't'
,
0
};
static
const
WCHAR
compsys_modelW
[]
=
{
'W'
,
'i'
,
'n'
,
'e'
,
0
};
static
const
WCHAR
diskdrive_
deviceid
W
[]
=
{
'
\\'
,
'\\'
,
'\\'
,
'\\'
,
'.'
,
'\\'
,
'\\'
,
'P'
,
'H'
,
'Y'
,
'S'
,
'I'
,
'C'
,
'A'
,
'L'
,
'D'
,
'R'
,
'I'
,
'V'
,
'E'
,
'0
'
,
0
};
static
const
WCHAR
diskdrive_
interfacetype
W
[]
=
{
'
I'
,
'D'
,
'E
'
,
0
};
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_mediatypeW
[]
=
static
const
WCHAR
diskdrive_mediatype
_fixed
W
[]
=
{
'F'
,
'i'
,
'x'
,
'e'
,
'd'
,
' '
,
'h'
,
'a'
,
'r'
,
'd'
,
' '
,
'd'
,
'i'
,
's'
,
'k'
,
0
};
static
const
WCHAR
diskdrive_mediatype_removableW
[]
=
{
'R'
,
'e'
,
'm'
,
'o'
,
'v'
,
'a'
,
'b'
,
'l'
,
'e'
,
' '
,
'm'
,
'e'
,
'd'
,
'i'
,
'a'
,
0
};
static
const
WCHAR
diskdrive_modelW
[]
=
{
'W'
,
'i'
,
'n'
,
'e'
,
' '
,
'D'
,
'i'
,
's'
,
'k'
,
' '
,
'D'
,
'r'
,
'i'
,
'v'
,
'e'
,
0
};
static
const
WCHAR
diskdrive_serialW
[]
=
...
...
@@ -624,10 +630,12 @@ struct record_diskdrive
{
const
WCHAR
*
device_id
;
UINT32
index
;
const
WCHAR
*
interfacetype
;
const
WCHAR
*
manufacturer
;
const
WCHAR
*
mediatype
;
const
WCHAR
*
name
;
const
WCHAR
*
model
;
const
WCHAR
*
serialnumber
;
UINT64
size
;
};
struct
record_diskpartition
{
...
...
@@ -802,11 +810,6 @@ static const struct record_bios data_bios[] =
{
bios_descriptionW
,
bios_descriptionW
,
bios_manufacturerW
,
bios_releasedateW
,
bios_serialnumberW
,
bios_smbiosbiosversionW
,
bios_versionW
}
};
static
const
struct
record_diskdrive
data_diskdrive
[]
=
{
{
diskdrive_deviceidW
,
0
,
diskdrive_manufacturerW
,
diskdrive_mediatypeW
,
diskdrive_modelW
,
diskdrive_serialW
}
};
static
const
struct
record_param
data_param
[]
=
{
{
class_processW
,
method_getownerW
,
-
1
,
param_returnvalueW
,
CIM_UINT32
,
VT_I4
},
...
...
@@ -1474,16 +1477,6 @@ done:
return
status
;
}
static
WCHAR
*
get_filesystem
(
const
WCHAR
*
root
)
{
static
const
WCHAR
ntfsW
[]
=
{
'N'
,
'T'
,
'F'
,
'S'
,
0
};
WCHAR
buffer
[
MAX_PATH
+
1
];
if
(
GetVolumeInformationW
(
root
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
buffer
,
MAX_PATH
+
1
))
return
heap_strdupW
(
buffer
);
return
heap_strdupW
(
ntfsW
);
}
static
UINT64
get_freespace
(
const
WCHAR
*
dir
,
UINT64
*
disksize
)
{
WCHAR
root
[]
=
{
'\\'
,
'\\'
,
'.'
,
'\\'
,
'A'
,
':'
,
0
};
...
...
@@ -1505,6 +1498,69 @@ static UINT64 get_freespace( const WCHAR *dir, UINT64 *disksize )
return
free
.
QuadPart
;
}
static
enum
fill_status
fill_diskdrive
(
struct
table
*
table
,
const
struct
expr
*
cond
)
{
static
const
WCHAR
fmtW
[]
=
{
'\\'
,
'\\'
,
'\\'
,
'\\'
,
'.'
,
'\\'
,
'\\'
,
'P'
,
'H'
,
'Y'
,
'S'
,
'I'
,
'C'
,
'A'
,
'L'
,
'D'
,
'R'
,
'I'
,
'V'
,
'E'
,
'%'
,
'u'
,
0
};
WCHAR
device_id
[
sizeof
(
fmtW
)
/
sizeof
(
fmtW
[
0
])
+
10
],
root
[]
=
{
'A'
,
':'
,
'\\'
,
0
};
struct
record_diskdrive
*
rec
;
UINT
i
,
row
=
0
,
offset
=
0
,
index
=
0
,
type
;
UINT64
size
=
1024
*
1024
*
1024
;
DWORD
drives
=
GetLogicalDrives
();
enum
fill_status
status
=
FILL_STATUS_UNFILTERED
;
if
(
!
resize_table
(
table
,
2
,
sizeof
(
*
rec
)
))
return
FILL_STATUS_FAILED
;
for
(
i
=
0
;
i
<
sizeof
(
drives
);
i
++
)
{
if
(
drives
&
(
1
<<
i
))
{
root
[
0
]
=
'A'
+
i
;
type
=
GetDriveTypeW
(
root
);
if
(
type
!=
DRIVE_FIXED
&&
type
!=
DRIVE_REMOVABLE
)
continue
;
if
(
!
resize_table
(
table
,
row
+
1
,
sizeof
(
*
rec
)
))
return
FILL_STATUS_FAILED
;
rec
=
(
struct
record_diskdrive
*
)(
table
->
data
+
offset
);
sprintfW
(
device_id
,
fmtW
,
index
);
rec
->
device_id
=
heap_strdupW
(
device_id
);
rec
->
index
=
index
;
rec
->
interfacetype
=
diskdrive_interfacetypeW
;
rec
->
manufacturer
=
diskdrive_manufacturerW
;
if
(
type
==
DRIVE_FIXED
)
rec
->
mediatype
=
diskdrive_mediatype_fixedW
;
else
rec
->
mediatype
=
diskdrive_mediatype_removableW
;
rec
->
model
=
diskdrive_modelW
;
rec
->
serialnumber
=
diskdrive_serialW
;
get_freespace
(
root
,
&
size
);
rec
->
size
=
size
;
if
(
!
match_row
(
table
,
row
,
cond
,
&
status
))
{
free_row_values
(
table
,
row
);
continue
;
}
offset
+=
sizeof
(
*
rec
);
index
++
;
row
++
;
}
}
TRACE
(
"created %u rows
\n
"
,
row
);
table
->
num_rows
=
row
;
return
status
;
}
static
WCHAR
*
get_filesystem
(
const
WCHAR
*
root
)
{
static
const
WCHAR
ntfsW
[]
=
{
'N'
,
'T'
,
'F'
,
'S'
,
0
};
WCHAR
buffer
[
MAX_PATH
+
1
];
if
(
GetVolumeInformationW
(
root
,
NULL
,
0
,
NULL
,
NULL
,
NULL
,
buffer
,
MAX_PATH
+
1
))
return
heap_strdupW
(
buffer
);
return
heap_strdupW
(
ntfsW
);
}
static
enum
fill_status
fill_diskpartition
(
struct
table
*
table
,
const
struct
expr
*
cond
)
{
static
const
WCHAR
fmtW
[]
=
...
...
@@ -2311,7 +2367,7 @@ static struct table builtin_classes[] =
{
class_compsysW
,
SIZEOF
(
col_compsys
),
col_compsys
,
0
,
0
,
NULL
,
fill_compsys
},
{
class_datafileW
,
SIZEOF
(
col_datafile
),
col_datafile
,
0
,
0
,
NULL
,
fill_datafile
},
{
class_directoryW
,
SIZEOF
(
col_directory
),
col_directory
,
0
,
0
,
NULL
,
fill_directory
},
{
class_diskdriveW
,
SIZEOF
(
col_diskdrive
),
col_diskdrive
,
SIZEOF
(
data_diskdrive
),
0
,
(
BYTE
*
)
data
_diskdrive
},
{
class_diskdriveW
,
SIZEOF
(
col_diskdrive
),
col_diskdrive
,
0
,
0
,
NULL
,
fill
_diskdrive
},
{
class_diskpartitionW
,
SIZEOF
(
col_diskpartition
),
col_diskpartition
,
0
,
0
,
NULL
,
fill_diskpartition
},
{
class_logicaldiskW
,
SIZEOF
(
col_logicaldisk
),
col_logicaldisk
,
0
,
0
,
NULL
,
fill_logicaldisk
},
{
class_logicaldisk2W
,
SIZEOF
(
col_logicaldisk
),
col_logicaldisk
,
0
,
0
,
NULL
,
fill_logicaldisk
},
...
...
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