Until now, only the "SMBiosData" property of the MSSMBios_RawSMBiosTables WMI class was implemented.
Add implementations for the following properties: * Active * DmiRevision * InstanceName * Size * SmbiosMajorVersion * SmbiosMinorVersion * Used20CallingMethod
-- v4: wbemprox: Implement more MSSMBios_RawSMBiosTables properties wbemprox/tests: Add tests for MSSMBios_RawSMBiosTables properties
From: Felix Hädicke felixhaedicke@web.de
--- dlls/wbemprox/tests/query.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c index 542446cc01b..0490c39ad72 100644 --- a/dlls/wbemprox/tests/query.c +++ b/dlls/wbemprox/tests/query.c @@ -2594,8 +2594,6 @@ static void test_MSSMBios_RawSMBiosTables( IWbemLocator *locator ) IWbemServices *services; IEnumWbemClassObject *iter; IWbemClassObject *obj; - VARIANT val; - CIMTYPE type; ULONG count; HRESULT hr;
@@ -2608,12 +2606,7 @@ static void test_MSSMBios_RawSMBiosTables( IWbemLocator *locator ) hr = IEnumWbemClassObject_Next( iter, WBEM_INFINITE, 1, &obj, &count ); ok( hr == S_OK, "got %#lx\n", hr );
- type = 0; - VariantInit( &val ); - hr = IWbemClassObject_Get( obj, L"SMBiosData", 0, &val, &type, NULL ); - ok( hr == S_OK, "got %#lx\n", hr ); - ok( V_VT( &val ) == (VT_UI1 | VT_ARRAY), "got %#x\n", V_VT(&val) ); - ok( type == (CIM_UINT8 | CIM_FLAG_ARRAY), "got %#lx\n", type ); + check_property( obj, L"SMBiosData", VT_ARRAY | VT_UI1, CIM_FLAG_ARRAY | CIM_UINT8 );
IWbemClassObject_Release( obj ); IEnumWbemClassObject_Release( iter );
From: Felix Hädicke felixhaedicke@web.de
Add checks for the following properties of the MSSMBios_RawSMBiosTables WMI class, which are not implemented in wine until now: * Active * DmiRevision * InstanceName * Size * SmbiosMajorVersion * SmbiosMinorVersion * Used20CallingMethod --- dlls/wbemprox/tests/query.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c index 0490c39ad72..fddad243f41 100644 --- a/dlls/wbemprox/tests/query.c +++ b/dlls/wbemprox/tests/query.c @@ -2606,7 +2606,14 @@ static void test_MSSMBios_RawSMBiosTables( IWbemLocator *locator ) hr = IEnumWbemClassObject_Next( iter, WBEM_INFINITE, 1, &obj, &count ); ok( hr == S_OK, "got %#lx\n", hr );
+ check_property( obj, L"Active", VT_BOOL, CIM_BOOLEAN ); + check_property( obj, L"DmiRevision", VT_UI1, CIM_UINT8 ); + check_property( obj, L"InstanceName", VT_BSTR, CIM_STRING ); + check_property( obj, L"Size", VT_I4, CIM_UINT32 ); check_property( obj, L"SMBiosData", VT_ARRAY | VT_UI1, CIM_FLAG_ARRAY | CIM_UINT8 ); + check_property( obj, L"SmbiosMajorVersion", VT_UI1, CIM_UINT8 ); + check_property( obj, L"SmbiosMinorVersion", VT_UI1, CIM_UINT8 ); + check_property( obj, L"Used20CallingMethod", VT_BOOL, CIM_BOOLEAN );
IWbemClassObject_Release( obj ); IEnumWbemClassObject_Release( iter );
From: Felix Hädicke felixhaedicke@web.de
Until now, only the "SMBiosData" property of the MSSMBios_RawSMBiosTables WMI class was implemented.
Add implementations for the following properties: * Active * DmiRevision * InstanceName * Size * SmbiosMajorVersion * SmbiosMinorVersion * Used20CallingMethod --- dlls/wbemprox/builtin.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c index d1a175bc084..3494a619bd6 100644 --- a/dlls/wbemprox/builtin.c +++ b/dlls/wbemprox/builtin.c @@ -455,7 +455,14 @@ static const struct column col_quickfixengineering[] = }; static const struct column col_rawsmbiostables[] = { - { L"SMBiosData", CIM_UINT8|CIM_FLAG_ARRAY|COL_FLAG_DYNAMIC }, + { L"Active", CIM_BOOLEAN }, + { L"DmiRevision", CIM_UINT8 }, + { L"InstanceName", CIM_STRING|COL_FLAG_KEY }, + { L"Size", CIM_UINT32 }, + { L"SMBiosData", CIM_UINT8|CIM_FLAG_ARRAY|COL_FLAG_DYNAMIC }, + { L"SmbiosMajorVersion", CIM_UINT8 }, + { L"SmbiosMinorVersion", CIM_UINT8 }, + { L"Used20CallingMethod", CIM_BOOLEAN }, }; static const struct column col_service[] = { @@ -1025,7 +1032,14 @@ struct record_quickfixengineering }; struct record_rawsmbiostables { + int active; + UINT8 dmi_revision; + const WCHAR *instance_name; + UINT32 size; const struct array *smbiosdata; + UINT8 major_version; + UINT8 minor_version; + int used_20_calling_method; }; struct record_service { @@ -1806,7 +1820,14 @@ static enum fill_status fill_rawbiosdata( struct table *table, const struct expr GetSystemFirmwareTable( RSMB, 0, buf, len );
rec = (struct record_rawsmbiostables *)table->data; + rec->active = -1; + rec->dmi_revision = buf->Revision; + rec->instance_name = L"SMBiosData"; rec->smbiosdata = get_rawbiosdata( (char *)buf + FIELD_OFFSET( RawSMBIOSData, SMBIOSTableData ), buf->Length ); + rec->size = rec->smbiosdata ? buf->Length : 0; + rec->major_version = buf->MajorVersion; + rec->minor_version = buf->MinorVersion; + rec->used_20_calling_method = buf->Used20CallingMethod ? -1 : 0;
if (!match_row( table, row, cond, &status )) free_row_values( table, row ); else row++;
Thanks. Do you have an application that needs these properties?
On Sat Oct 25 15:26:26 2025 +0000, Hans Leidekker wrote:
Thanks. Do you have an application that needs these properties?
Yes, Condor (versions 2 and 3) show annoying error messages about these missing properties.
This merge request was approved by Hans Leidekker.