[PATCH 0/1] MR8701: devenum: Add DevicePath field for a video input device.
From: Haoyang Chen <chenhaoyang(a)kylinos.cn> --- dlls/devenum/createdevenum.c | 7 +++++- dlls/devenum/tests/devenum.c | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/dlls/devenum/createdevenum.c b/dlls/devenum/createdevenum.c index bc91b235804..055299aa832 100644 --- a/dlls/devenum/createdevenum.c +++ b/dlls/devenum/createdevenum.c @@ -713,7 +713,7 @@ static void register_vfw_codecs(void) static void register_avicap_devices(void) { - WCHAR friendlyname[32], version[32]; + WCHAR friendlyname[32], version[32], device_path[32]; IPropertyBag *prop_bag = NULL; REGFILTERPINS2 rgpins = {0}; REGPINTYPES rgtypes; @@ -753,6 +753,11 @@ static void register_avicap_devices(void) V_I4(&var) = i; IPropertyBag_Write(prop_bag, L"VFWIndex", &var); + swprintf(device_path, ARRAY_SIZE(device_path), L"/dev/video%d", i); + V_VT(&var) = VT_BSTR; + V_BSTR(&var) = SysAllocString(device_path); + IPropertyBag_Write(prop_bag, L"DevicePath", &var); + VariantClear(&var); IPropertyBag_Release(prop_bag); } diff --git a/dlls/devenum/tests/devenum.c b/dlls/devenum/tests/devenum.c index 52a96c122b8..ccc4eb3b5b2 100644 --- a/dlls/devenum/tests/devenum.c +++ b/dlls/devenum/tests/devenum.c @@ -1154,6 +1154,51 @@ static void test_vfw(void) IParseDisplayName_Release(parser); } +static void test_video_input(void) +{ + ICreateDevEnum* create_devenum; + IEnumMoniker *mon; + IMoniker *moniker; + IPropertyBag *prop_bag; + GUID guid; + VARIANT var; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, &IID_ICreateDevEnum, (LPVOID*)&create_devenum); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = ICreateDevEnum_CreateClassEnumerator(create_devenum, &CLSID_VideoInputDeviceCategory, &mon, 0); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + while (IEnumMoniker_Next(mon, 1, &moniker, NULL) == S_OK) + { + hr = IMoniker_BindToStorage(moniker, NULL, NULL, &IID_IPropertyBag, (void **)&prop_bag); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + VariantInit(&var); + hr = IPropertyBag_Read(prop_bag, L"CLSID", &var, NULL); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = CLSIDFromString(V_BSTR(&var), &guid); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + VariantClear(&var); + hr = IPropertyBag_Read(prop_bag, L"FriendlyName", &var, NULL); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + VariantClear(&var); + hr = IPropertyBag_Read(prop_bag, L"DevicePath", &var, NULL); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + VariantClear(&var); + IPropertyBag_Release(prop_bag); + IMoniker_Release(moniker); + } + + IEnumMoniker_Release(mon); + ICreateDevEnum_Release(create_devenum); +} + START_TEST(devenum) { HRESULT hr; @@ -1176,6 +1221,7 @@ START_TEST(devenum) test_wavein(); test_midiout(); test_vfw(); + test_video_input(); CoUninitialize(); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8701
Maotong Zhang (@xiaotong) commented about dlls/devenum/createdevenum.c:
V_I4(&var) = i; IPropertyBag_Write(prop_bag, L"VFWIndex", &var);
+ swprintf(device_path, ARRAY_SIZE(device_path), L"/dev/video%d", i);
Is it really okay to code a Linux path here? It doesn't seem right. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_111945
On Mon Aug 4 04:25:39 2025 +0000, Maotong Zhang wrote:
Is it really okay to code a Linux path here? It doesn't seem right. It only serves as a unique identifier field. The WeCom application actually doesn't use it, it just retrieves it and doesn't actually use it.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_111946
The tests fail and segfault on Windows (so maybe there needs to be a webcam check?) -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_111949
On Mon Aug 4 06:44:24 2025 +0000, Aida Jonikienė wrote:
The tests fail and segfault on Windows (so maybe there needs to be a webcam check?) Sure, to need a physical camera device. The DevicePath field may not exist in some Windows series releases.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_111989
Hi im having a problem setting up winlator 10.1 im struggling to sign in to steam and the gta launcher app is refusing to initialize -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_112791
Its says loading user data then the app crashes my device is the s25+ with snapdragon 8 elite -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_112792
On Wed Aug 13 16:46:31 2025 +0000, zero wrote:
Hi im having a problem setting up winlator 10.1 im struggling to sign in to steam and the gta launcher app is refusing to initialize A merge request discussion is not meant for user support. Please ask such things on the forum.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_112795
On Wed Aug 27 21:43:51 2025 +0000, Haoyang Chen wrote:
It only serves as a unique identifier field. The WeCom application actually doesn't use it, it just retrieves it and doesn't actually use it. I don't think we should be putting a Unix path there. We don't yet have the infrastructure to put the correct path there, but in that case it should probably be an explicitly dummy string.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8701#note_114037
participants (7)
-
Aida Jonikienė -
Alexandre Julliard (@julliard) -
Elizabeth Figura (@zfigura) -
Haoyang Chen -
Haoyang Chen (@chenhaoyang) -
Maotong Zhang (@xiaotong) -
zero (@brandoncolon378)