On Thu, Jul 15, 2021 at 03:09:41PM +0800, Haoyang Chen wrote:
Signed-off-by: Haoyang Chen <chenhaoyang(a)uniontech.com> --- loader/wine.inf.in | 7 ++ programs/wineboot/Makefile.in | 2 +- programs/wineboot/wineboot.c | 119 ++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 1 deletion(-)
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c index 92276fcbe76..1d3a43fedff 100644 --- a/programs/wineboot/wineboot.c +++ b/programs/wineboot/wineboot.c @@ -79,6 +79,8 @@ #include <setupapi.h> #include <newdev.h> #include "resource.h" +#include "initguid.h" +#include <wbemcli.h>
WINE_DEFAULT_DEBUG_CHANNEL(wineboot);
@@ -1586,6 +1588,122 @@ done: return ret; }
+static HRESULT query_property(IWbemClassObject *obj, const WCHAR *prop, WCHAR *buf, DWORD bufLen ) +{ + CIMTYPE type = 0xdeadbeef; + VARIANT val; + HRESULT hr = S_OK; + + if (!buf || !bufLen) return WBEM_E_INVALID_QUERY; + + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, prop, 0, &val, &type, NULL ); + if (hr != S_OK) return hr; + + if (V_VT(&val) == VT_BSTR) + wcscpy(buf,V_BSTR(&val)); + else + hr = WBEM_E_INVALID_QUERY_TYPE; + VariantClear( &val ); + return hr; +} + +static void insert_adapter(HKEY hkey, IWbemClassObject *obj) +{ + WCHAR value[MAX_PATH]; + WCHAR connection[MAX_PATH]; + HKEY subhkey; + LSTATUS status; + static int index = 0; + + if (S_OK != query_property( obj, L"GUID", value, ARRAYSIZE(value))) + return; + + swprintf( connection, ARRAYSIZE(connection), L"%s\\Connection", value); + + if ((status = RegCreateKeyExW( hkey, connection, 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &subhkey, NULL ))) + return; + set_reg_value_dword(subhkey, L"DefaultNameIndex", index++); + set_reg_value_dword(subhkey, L"DefaultNameResourceId", 0x709); /* FIXME */ + + if (S_OK == query_property( obj, L"Name", value, ARRAYSIZE(value))) + set_reg_value(subhkey, L"Name", value); + if (S_OK == query_property( obj, L"PNPDeviceID", value, ARRAYSIZE(value))) + set_reg_value(subhkey, L"PnpInstanceID", value); + RegCloseKey( subhkey ); +}
We're already adding some network card keys in ndis.sys, so probably this should go there instead of wineboot. Also, which is these does the app you're looking at actually need? I don't see DefaultNameIndex and DefaultNameResourceId in my Windows 10 VM and don't see PnpInstanceID on many of the adaptors in my Windows 7 VM. Huw.