Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/devenum/Makefile.in | 1 - dlls/devenum/devenum_main.c | 74 ++++++++++++++++++++++- dlls/devenum/devenum_private.h | 10 --- dlls/devenum/factory.c | 134 ----------------------------------------- 4 files changed, 72 insertions(+), 147 deletions(-) delete mode 100644 dlls/devenum/factory.c
diff --git a/dlls/devenum/Makefile.in b/dlls/devenum/Makefile.in index ae138b6..d1407a9 100644 --- a/dlls/devenum/Makefile.in +++ b/dlls/devenum/Makefile.in @@ -5,7 +5,6 @@ DELAYIMPORTS = msvfw32 C_SRCS = \ createdevenum.c \ devenum_main.c \ - factory.c \ mediacatenum.c \ parsedisplayname.c
diff --git a/dlls/devenum/devenum_main.c b/dlls/devenum/devenum_main.c index cb4b454..7bfc593 100644 --- a/dlls/devenum/devenum_main.c +++ b/dlls/devenum/devenum_main.c @@ -1,5 +1,5 @@ /* - * exported dll functions for devenum.dll + * Device Enumeration * * Copyright (C) 2002 John K. Hohm * Copyright (C) 2002 Robert Shearman @@ -56,6 +56,76 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) return TRUE; }
+static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID iid, void **obj) +{ + TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), obj); + + if (IsEqualGUID(iid, &IID_IUnknown) || IsEqualGUID(iid, &IID_IClassFactory)) + { + IClassFactory_AddRef(iface); + *obj = iface; + return S_OK; + } + + *obj = NULL; + WARN("no interface for %s\n", debugstr_guid(iid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface) +{ + DEVENUM_LockModule(); + return 2; +} + +static ULONG WINAPI ClassFactory_Release(IClassFactory *iface) +{ + DEVENUM_UnlockModule(); + return 1; +} + +static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, + IUnknown *outer, REFIID iid, void **obj) +{ + TRACE("(%p, %s, %p)\n", outer, debugstr_guid(iid), obj); + + if (!obj) return E_POINTER; + + if (outer) return CLASS_E_NOAGGREGATION; + + if (IsEqualGUID(&IID_ICreateDevEnum, iid)) + { + *obj = &DEVENUM_CreateDevEnum; + return S_OK; + } + if (IsEqualGUID(&IID_IParseDisplayName, iid)) + { + *obj = &DEVENUM_ParseDisplayName; + return S_OK; + } + + return CLASS_E_CLASSNOTAVAILABLE; +} + +static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL lock) +{ + if (lock) + DEVENUM_LockModule(); + else + DEVENUM_UnlockModule(); + return S_OK; +} + +static const IClassFactoryVtbl ClassFactory_vtbl = { + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + ClassFactory_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory devenum_cf = { &ClassFactory_vtbl }; + /*********************************************************************** * DllGetClassObject (DEVENUM.@) */ @@ -69,7 +139,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) * Oh well - works just fine as it is */ if (IsEqualGUID(rclsid, &CLSID_SystemDeviceEnum) || IsEqualGUID(rclsid, &CLSID_CDeviceMoniker)) - return IClassFactory_QueryInterface(&DEVENUM_ClassFactory.IClassFactory_iface, iid, ppv); + return IClassFactory_QueryInterface(&devenum_cf, iid, ppv);
FIXME("CLSID: %s, IID: %s\n", debugstr_guid(rclsid), debugstr_guid(iid)); return CLASS_E_CLASSNOTAVAILABLE; diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h index df0080d..ea4e017 100644 --- a/dlls/devenum/devenum_private.h +++ b/dlls/devenum/devenum_private.h @@ -51,15 +51,6 @@ extern LONG dll_refs DECLSPEC_HIDDEN; static inline void DEVENUM_LockModule(void) { InterlockedIncrement(&dll_refs); } static inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs); }
- -/********************************************************************** - * ClassFactory declaration for devenum.dll - */ -typedef struct -{ - IClassFactory IClassFactory_iface; -} ClassFactoryImpl; - enum device_type { DEVICE_FILTER, @@ -84,7 +75,6 @@ typedef struct MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void) DECLSPEC_HIDDEN; HRESULT create_EnumMoniker(REFCLSID class, IEnumMoniker **enum_mon) DECLSPEC_HIDDEN;
-extern ClassFactoryImpl DEVENUM_ClassFactory DECLSPEC_HIDDEN; extern ICreateDevEnum DEVENUM_CreateDevEnum DECLSPEC_HIDDEN; extern IParseDisplayName DEVENUM_ParseDisplayName DECLSPEC_HIDDEN;
diff --git a/dlls/devenum/factory.c b/dlls/devenum/factory.c deleted file mode 100644 index c808fa5..0000000 --- a/dlls/devenum/factory.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * ClassFactory implementation for DEVENUM.dll - * - * Copyright (C) 2002 John K. Hohm - * Copyright (C) 2002 Robert Shearman - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "devenum_private.h" - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(devenum); - -/********************************************************************** - * DEVENUM_IClassFactory_QueryInterface (also IUnknown) - */ -static HRESULT WINAPI DEVENUM_IClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, - void **ppvObj) -{ - TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj); - - if (ppvObj == NULL) return E_POINTER; - - if (IsEqualGUID(riid, &IID_IUnknown) || - IsEqualGUID(riid, &IID_IClassFactory)) - { - *ppvObj = iface; - IClassFactory_AddRef(iface); - return S_OK; - } - else if (IsEqualGUID(riid, &IID_IParseDisplayName)) - { - return IClassFactory_CreateInstance(iface, NULL, riid, ppvObj); - } - - FIXME("- no interface IID: %s\n", debugstr_guid(riid)); - return E_NOINTERFACE; -} - -/********************************************************************** - * DEVENUM_IClassFactory_AddRef (also IUnknown) - */ -static ULONG WINAPI DEVENUM_IClassFactory_AddRef(IClassFactory *iface) -{ - TRACE("\n"); - - DEVENUM_LockModule(); - - return 2; /* non-heap based object */ -} - -/********************************************************************** - * DEVENUM_IClassFactory_Release (also IUnknown) - */ -static ULONG WINAPI DEVENUM_IClassFactory_Release(IClassFactory *iface) -{ - TRACE("\n"); - - DEVENUM_UnlockModule(); - - return 1; /* non-heap based object */ -} - -/********************************************************************** - * DEVENUM_IClassFactory_CreateInstance - */ -static HRESULT WINAPI DEVENUM_IClassFactory_CreateInstance(IClassFactory *iface, - IUnknown *pUnkOuter, REFIID riid, void **ppvObj) -{ - TRACE("(%p)->(%p, %s, %p)\n", iface, pUnkOuter, debugstr_guid(riid), ppvObj); - - if (ppvObj == NULL) return E_POINTER; - - /* Don't support aggregation (Windows doesn't) */ - if (pUnkOuter != NULL) return CLASS_E_NOAGGREGATION; - - if (IsEqualGUID(&IID_ICreateDevEnum, riid)) - { - *ppvObj = &DEVENUM_CreateDevEnum; - return S_OK; - } - if (IsEqualGUID(&IID_IParseDisplayName, riid)) - { - *ppvObj = &DEVENUM_ParseDisplayName; - return S_OK; - } - - return CLASS_E_CLASSNOTAVAILABLE; -} - -/********************************************************************** - * DEVENUM_IClassFactory_LockServer - */ -static HRESULT WINAPI DEVENUM_IClassFactory_LockServer(IClassFactory *iface, BOOL fLock) -{ - TRACE("\n"); - - if (fLock) - DEVENUM_LockModule(); - else - DEVENUM_UnlockModule(); - return S_OK; -} - -/********************************************************************** - * IClassFactory_Vtbl - */ -static const IClassFactoryVtbl IClassFactory_Vtbl = -{ - DEVENUM_IClassFactory_QueryInterface, - DEVENUM_IClassFactory_AddRef, - DEVENUM_IClassFactory_Release, - DEVENUM_IClassFactory_CreateInstance, - DEVENUM_IClassFactory_LockServer -}; - -/********************************************************************** - * static ClassFactory instance - */ -ClassFactoryImpl DEVENUM_ClassFactory = { { &IClassFactory_Vtbl } };
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/devenum/devenum_main.c | 46 +++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-)
diff --git a/dlls/devenum/devenum_main.c b/dlls/devenum/devenum_main.c index 7bfc593..3499f99 100644 --- a/dlls/devenum/devenum_main.c +++ b/dlls/devenum/devenum_main.c @@ -56,6 +56,17 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) return TRUE; }
+struct class_factory +{ + IClassFactory IClassFactory_iface; + IUnknown *obj; +}; + +static inline struct class_factory *impl_from_IClassFactory( IClassFactory *iface ) +{ + return CONTAINING_RECORD( iface, struct class_factory, IClassFactory_iface ); +} + static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID iid, void **obj) { TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), obj); @@ -87,24 +98,15 @@ static ULONG WINAPI ClassFactory_Release(IClassFactory *iface) static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID iid, void **obj) { + struct class_factory *This = impl_from_IClassFactory( iface ); + TRACE("(%p, %s, %p)\n", outer, debugstr_guid(iid), obj);
if (!obj) return E_POINTER;
if (outer) return CLASS_E_NOAGGREGATION;
- if (IsEqualGUID(&IID_ICreateDevEnum, iid)) - { - *obj = &DEVENUM_CreateDevEnum; - return S_OK; - } - if (IsEqualGUID(&IID_IParseDisplayName, iid)) - { - *obj = &DEVENUM_ParseDisplayName; - return S_OK; - } - - return CLASS_E_CLASSNOTAVAILABLE; + return IUnknown_QueryInterface(This->obj, iid, obj); }
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL lock) @@ -124,24 +126,24 @@ static const IClassFactoryVtbl ClassFactory_vtbl = { ClassFactory_LockServer };
-static IClassFactory devenum_cf = { &ClassFactory_vtbl }; +static struct class_factory create_devenum_cf = { { &ClassFactory_vtbl }, (IUnknown *)&DEVENUM_CreateDevEnum }; +static struct class_factory device_moniker_cf = { { &ClassFactory_vtbl }, (IUnknown *)&DEVENUM_ParseDisplayName };
/*********************************************************************** * DllGetClassObject (DEVENUM.@) */ -HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) +HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, void **obj) { - TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv); + TRACE("(%s, %s, %p)\n", debugstr_guid(clsid), debugstr_guid(iid), obj);
- *ppv = NULL; + *obj = NULL;
- /* FIXME: we should really have two class factories. - * Oh well - works just fine as it is */ - if (IsEqualGUID(rclsid, &CLSID_SystemDeviceEnum) || - IsEqualGUID(rclsid, &CLSID_CDeviceMoniker)) - return IClassFactory_QueryInterface(&devenum_cf, iid, ppv); + if (IsEqualGUID(clsid, &CLSID_SystemDeviceEnum)) + return IClassFactory_QueryInterface(&create_devenum_cf.IClassFactory_iface, iid, obj); + else if (IsEqualGUID(clsid, &CLSID_CDeviceMoniker)) + return IClassFactory_QueryInterface(&device_moniker_cf.IClassFactory_iface, iid, obj);
- FIXME("CLSID: %s, IID: %s\n", debugstr_guid(rclsid), debugstr_guid(iid)); + FIXME("class %s not available\n", debugstr_guid(clsid)); return CLASS_E_CLASSNOTAVAILABLE; }
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/devenum/createdevenum.c | 14 ++++++-------- dlls/devenum/devenum_main.c | 13 ++++--------- dlls/devenum/devenum_private.h | 4 +--- dlls/devenum/mediacatenum.c | 4 +++- 4 files changed, 14 insertions(+), 21 deletions(-)
diff --git a/dlls/devenum/createdevenum.c b/dlls/devenum/createdevenum.c index 06c264c..8275c99 100644 --- a/dlls/devenum/createdevenum.c +++ b/dlls/devenum/createdevenum.c @@ -41,8 +41,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(devenum);
-extern HINSTANCE DEVENUM_hInstance; - static const WCHAR wszFilterKeyName[] = {'F','i','l','t','e','r',0}; static const WCHAR wszMeritName[] = {'M','e','r','i','t',0}; static const WCHAR wszPins[] = {'P','i','n','s',0}; @@ -460,7 +458,7 @@ static void register_legacy_filters(void) V_VT(&var) = VT_BSTR; if (!(V_BSTR(&var) = SysAllocString(wszFilterSubkeyName))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
@@ -537,7 +535,7 @@ static BOOL CALLBACK register_dsound_devices(GUID *guid, const WCHAR *desc, cons StringFromGUID2(&CLSID_DSoundRender, clsid, CHARS_IN_GUID); if (!(V_BSTR(&var) = SysAllocString(clsid))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
@@ -620,7 +618,7 @@ static void register_waveout_devices(void) StringFromGUID2(&CLSID_AudioRender, clsid, CHARS_IN_GUID); if (!(V_BSTR(&var) = SysAllocString(clsid))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
@@ -693,7 +691,7 @@ static void register_wavein_devices(void) StringFromGUID2(&CLSID_AudioRecord, clsid, CHARS_IN_GUID); if (!(V_BSTR(&var) = SysAllocString(clsid))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
@@ -765,7 +763,7 @@ static void register_midiout_devices(void) StringFromGUID2(&CLSID_AVIMIDIRender, clsid, CHARS_IN_GUID); if (!(V_BSTR(&var) = SysAllocString(clsid))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
@@ -854,7 +852,7 @@ static void register_vfw_codecs(void) StringFromGUID2(&CLSID_AVICo, clsid, CHARS_IN_GUID); if (!(V_BSTR(&var) = SysAllocString(clsid))) goto cleanup; - hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var); + hr = IPropertyBag_Write(prop_bag, clsidW, &var); if (FAILED(hr)) goto cleanup; VariantClear(&var);
diff --git a/dlls/devenum/devenum_main.c b/dlls/devenum/devenum_main.c index 3499f99..98ad1ad 100644 --- a/dlls/devenum/devenum_main.c +++ b/dlls/devenum/devenum_main.c @@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(devenum);
DECLSPEC_HIDDEN LONG dll_refs; -DECLSPEC_HIDDEN HINSTANCE DEVENUM_hInstance; +static HINSTANCE devenum_instance;
typedef struct { @@ -36,11 +36,6 @@ typedef struct } register_info;
/*********************************************************************** - * Global string constant definitions - */ -const WCHAR clsid_keyname[6] = { 'C', 'L', 'S', 'I', 'D', 0 }; - -/*********************************************************************** * DllEntryPoint */ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) @@ -49,7 +44,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
switch(fdwReason) { case DLL_PROCESS_ATTACH: - DEVENUM_hInstance = hinstDLL; + devenum_instance = hinstDLL; DisableThreadLibraryCalls(hinstDLL); break; } @@ -166,7 +161,7 @@ HRESULT WINAPI DllRegisterServer(void)
TRACE("\n");
- res = __wine_register_resources( DEVENUM_hInstance ); + res = __wine_register_resources( devenum_instance ); if (FAILED(res)) return res;
@@ -214,5 +209,5 @@ HRESULT WINAPI DllRegisterServer(void) HRESULT WINAPI DllUnregisterServer(void) { FIXME("stub!\n"); - return __wine_unregister_resources( DEVENUM_hInstance ); + return __wine_unregister_resources( devenum_instance ); } diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h index ea4e017..e18c57d 100644 --- a/dlls/devenum/devenum_private.h +++ b/dlls/devenum/devenum_private.h @@ -83,7 +83,7 @@ extern IParseDisplayName DEVENUM_ParseDisplayName DECLSPEC_HIDDEN; */
static const WCHAR backslashW[] = {'\',0}; -static const WCHAR clsidW[] = {'C','L','S','I','D','\',0}; +static const WCHAR clsidW[] = {'C','L','S','I','D',0}; static const WCHAR instanceW[] = {'\','I','n','s','t','a','n','c','e',0}; static const WCHAR wszActiveMovieKey[] = {'S','o','f','t','w','a','r','e','\', 'M','i','c','r','o','s','o','f','t','\', @@ -93,5 +93,3 @@ static const WCHAR deviceW[] = {'@','d','e','v','i','c','e',':',0}; static const WCHAR dmoW[] = {'d','m','o',':',0}; static const WCHAR swW[] = {'s','w',':',0}; static const WCHAR cmW[] = {'c','m',':',0}; - -extern const WCHAR clsid_keyname[6] DECLSPEC_HIDDEN; diff --git a/dlls/devenum/mediacatenum.c b/dlls/devenum/mediacatenum.c index c4338a2..660e81c 100644 --- a/dlls/devenum/mediacatenum.c +++ b/dlls/devenum/mediacatenum.c @@ -347,6 +347,7 @@ static HRESULT create_PropertyBag(MediaCatMoniker *mon, IPropertyBag **ppBag) else if (rpb->type == DEVICE_FILTER) { strcpyW(rpb->path, clsidW); + strcatW(rpb->path, backslashW); if (mon->has_class) { StringFromGUID2(&mon->class, rpb->path + strlenW(rpb->path), CHARS_IN_GUID); @@ -496,7 +497,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject(IMoniker *iface, IBi if (SUCCEEDED(res)) { V_VT(&var) = VT_LPWSTR; - res = IPropertyBag_Read(pProp, clsid_keyname, &var, NULL); + res = IPropertyBag_Read(pProp, clsidW, &var, NULL); } if (SUCCEEDED(res)) { @@ -1027,6 +1028,7 @@ HRESULT create_EnumMoniker(REFCLSID class, IEnumMoniker **ppEnumMoniker) pEnumMoniker->class = *class;
strcpyW(buffer, clsidW); + strcatW(buffer, backslashW); StringFromGUID2(class, buffer + strlenW(buffer), CHARS_IN_GUID); strcatW(buffer, instanceW); if (RegOpenKeyExW(HKEY_CLASSES_ROOT, buffer, 0, KEY_ENUMERATE_SUB_KEYS, &pEnumMoniker->sw_key))
Zebediah Figura z.figura12@gmail.com writes:
Signed-off-by: Zebediah Figura z.figura12@gmail.com
dlls/devenum/createdevenum.c | 14 ++++++-------- dlls/devenum/devenum_main.c | 13 ++++--------- dlls/devenum/devenum_private.h | 4 +--- dlls/devenum/mediacatenum.c | 4 +++- 4 files changed, 14 insertions(+), 21 deletions(-)
It doesn't work here:
../../../tools/runtest -q -P wine -T ../../.. -M devenum.dll -p devenum_test.exe.so devenum && touch devenum.ok devenum.c:585: Test failed: filter should be registered devenum.c:592: Test failed: Read failed: 0x80070002 devenum.c:595: Test failed: expected L"{DEADBEEF-CF51-43E6-B6C5-299EA8B6B591}", got L"\58e1\e0f1\cb04\11d0\4ebd\a000\11c9\86ce\2a92\37e9\d9aa\11d2\84bf\f28e\55b1\ed5a\29d1\e306\27e5\11ce\5d87\6000\b78c\6680\29d2\e306\27e5\11ce\5d87\6000\b78c\6680\9faf\0558\c356\11ce\01bf\aa00\5500\5a59\ca52\2ca8\3c3f\11d2\3db7\c000\b64f\3dbd\a762\33d9\90c8\11d0\43bd\a000\11c9\86ce\8d32\a5ea\253d\11d1\f1b3"... devenum.c:600: Test failed: Read failed: 0x80070002 devenum.c:601: Test failed: expected L"{DEADBEEF-CF51-43E6-B6C5-299EA8B6B591}", got L"\58e1\e0f1\cb04\11d0\4ebd\a000\11c9\86ce\2a92\37e9\d9aa\11d2\84bf\f28e\55b1\ed5a\29d1\e306\27e5\11ce\5d87\6000\b78c\6680\29d2\e306\27e5\11ce\5d87\6000\b78c\6680\9faf\0558\c356\11ce\01bf\aa00\5500\5a59\ca52\2ca8\3c3f\11d2\3db7\c000\b64f\3dbd\a762\33d9\90c8\11d0\43bd\a000\11c9\86ce\8d32\a5ea\253d\11d1\f1b3"... Makefile:183: recipe for target 'devenum.ok' failed make: *** [devenum.ok] Error 5
On 26/06/18 06:34, Alexandre Julliard wrote:
Zebediah Figura z.figura12@gmail.com writes:
Signed-off-by: Zebediah Figura z.figura12@gmail.com
dlls/devenum/createdevenum.c | 14 ++++++-------- dlls/devenum/devenum_main.c | 13 ++++--------- dlls/devenum/devenum_private.h | 4 +--- dlls/devenum/mediacatenum.c | 4 +++- 4 files changed, 14 insertions(+), 21 deletions(-)
It doesn't work here:
../../../tools/runtest -q -P wine -T ../../.. -M devenum.dll -p devenum_test.exe.so devenum && touch devenum.ok devenum.c:585: Test failed: filter should be registered devenum.c:592: Test failed: Read failed: 0x80070002 devenum.c:595: Test failed: expected L"{DEADBEEF-CF51-43E6-B6C5-299EA8B6B591}", got L"\58e1\e0f1\cb04\11d0\4ebd\a000\11c9\86ce\2a92\37e9\d9aa\11d2\84bf\f28e\55b1\ed5a\29d1\e306\27e5\11ce\5d87\6000\b78c\6680\29d2\e306\27e5\11ce\5d87\6000\b78c\6680\9faf\0558\c356\11ce\01bf\aa00\5500\5a59\ca52\2ca8\3c3f\11d2\3db7\c000\b64f\3dbd\a762\33d9\90c8\11d0\43bd\a000\11c9\86ce\8d32\a5ea\253d\11d1\f1b3"... devenum.c:600: Test failed: Read failed: 0x80070002 devenum.c:601: Test failed: expected L"{DEADBEEF-CF51-43E6-B6C5-299EA8B6B591}", got L"\58e1\e0f1\cb04\11d0\4ebd\a000\11c9\86ce\2a92\37e9\d9aa\11d2\84bf\f28e\55b1\ed5a\29d1\e306\27e5\11ce\5d87\6000\b78c\6680\29d2\e306\27e5\11ce\5d87\6000\b78c\6680\9faf\0558\c356\11ce\01bf\aa00\5500\5a59\ca52\2ca8\3c3f\11d2\3db7\c000\b64f\3dbd\a762\33d9\90c8\11d0\43bd\a000\11c9\86ce\8d32\a5ea\253d\11d1\f1b3"... Makefile:183: recipe for target 'devenum.ok' failed make: *** [devenum.ok] Error 5
Apologies; I missed a spot. Resent.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/devenum/devenum_main.c | 7 ------- 1 file changed, 7 deletions(-)
diff --git a/dlls/devenum/devenum_main.c b/dlls/devenum/devenum_main.c index 98ad1ad..b17bc93 100644 --- a/dlls/devenum/devenum_main.c +++ b/dlls/devenum/devenum_main.c @@ -28,13 +28,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(devenum); DECLSPEC_HIDDEN LONG dll_refs; static HINSTANCE devenum_instance;
-typedef struct -{ - REFCLSID clsid; - LPCWSTR friendly_name; - BOOL instance; -} register_info; - /*********************************************************************** * DllEntryPoint */
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/devenum/Makefile.in | 3 +- dlls/devenum/createdevenum.c | 2 +- dlls/devenum/fil_data.idl | 47 -------------------------- dlls/dxdiagn/Makefile.in | 3 +- dlls/dxdiagn/provider.c | 2 +- dlls/quartz/Makefile.in | 1 - dlls/quartz/fil_data.idl | 52 ----------------------------- dlls/quartz/filtermapper.c | 2 +- dlls/quartz/tests/Makefile.in | 1 - dlls/quartz/tests/fil_data.idl | 52 ----------------------------- dlls/quartz/tests/filtermapper.c | 2 +- include/Makefile.in | 1 + {dlls/dxdiagn => include/wine}/fil_data.idl | 21 ++---------- 13 files changed, 10 insertions(+), 179 deletions(-) delete mode 100644 dlls/devenum/fil_data.idl delete mode 100644 dlls/quartz/fil_data.idl delete mode 100644 dlls/quartz/tests/fil_data.idl rename {dlls/dxdiagn => include/wine}/fil_data.idl (67%)
diff --git a/dlls/devenum/Makefile.in b/dlls/devenum/Makefile.in index d1407a9..2760eed 100644 --- a/dlls/devenum/Makefile.in +++ b/dlls/devenum/Makefile.in @@ -9,7 +9,6 @@ C_SRCS = \ parsedisplayname.c
IDL_SRCS = \ - devenum_classes.idl \ - fil_data.idl + devenum_classes.idl
RC_SRCS = devenum.rc diff --git a/dlls/devenum/createdevenum.c b/dlls/devenum/createdevenum.c index 8275c99..c138cb7 100644 --- a/dlls/devenum/createdevenum.c +++ b/dlls/devenum/createdevenum.c @@ -37,7 +37,7 @@ #include "mmddk.h"
#include "initguid.h" -#include "fil_data.h" +#include "wine/fil_data.h"
WINE_DEFAULT_DEBUG_CHANNEL(devenum);
diff --git a/dlls/devenum/fil_data.idl b/dlls/devenum/fil_data.idl deleted file mode 100644 index 7e37a75..0000000 --- a/dlls/devenum/fil_data.idl +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2009 Vitaliy Margolen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#pragma makedep header - -import "objidl.idl"; -import "strmif.idl"; -import "unknwn.idl"; - - -/***************************************************************************** - * IAMFilterData interface - */ -[ - object, - uuid(97f7c4d4-547b-4a5f-8332-536430ad2e4d), - pointer_default(unique) -] -interface IAMFilterData : IUnknown -{ - typedef [unique] IAMFilterData *LPIAMFILTERDATA; - - HRESULT ParseFilterData( - [in] BYTE * rgbFilterData, - [in] ULONG cb, - [out] BYTE ** prgbRegFilter2); - - HRESULT CreateFilterData( - [in] REGFILTER2 * prf2, - [out] BYTE ** prgbFilterData, - [out] ULONG * pcb); -} diff --git a/dlls/dxdiagn/Makefile.in b/dlls/dxdiagn/Makefile.in index 3a1017e..c16396e 100644 --- a/dlls/dxdiagn/Makefile.in +++ b/dlls/dxdiagn/Makefile.in @@ -9,5 +9,4 @@ C_SRCS = \ RC_SRCS = dxdiagn.rc
IDL_SRCS = \ - dxdiagn.idl \ - fil_data.idl + dxdiagn.idl diff --git a/dlls/dxdiagn/provider.c b/dlls/dxdiagn/provider.c index 4f964ad..1fdab5e 100644 --- a/dlls/dxdiagn/provider.c +++ b/dlls/dxdiagn/provider.c @@ -35,7 +35,7 @@ #include "d3d9.h" #include "strmif.h" #include "initguid.h" -#include "fil_data.h" +#include "wine/fil_data.h" #include "psapi.h" #include "wbemcli.h"
diff --git a/dlls/quartz/Makefile.in b/dlls/quartz/Makefile.in index e938865..5eb8d44 100644 --- a/dlls/quartz/Makefile.in +++ b/dlls/quartz/Makefile.in @@ -30,7 +30,6 @@ RC_SRCS = version.rc
IDL_SRCS = \ control_tlb.idl \ - fil_data.idl \ quartz_strmif.idl
dlldata_EXTRADEFS = -DENTRY_PREFIX=QUARTZ_ -DPROXY_DELEGATION -DWINE_REGISTER_DLL diff --git a/dlls/quartz/fil_data.idl b/dlls/quartz/fil_data.idl deleted file mode 100644 index ab93499..0000000 --- a/dlls/quartz/fil_data.idl +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2009 Vitaliy Margolen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#pragma makedep header - -import "objidl.idl"; -import "strmif.idl"; -import "unknwn.idl"; - - -/***************************************************************************** - * IAMFilterData interface - * - * Notes: - * - This interface is deprecated and IFilterMapper2 should be used instead. - * - There is no full replacement for IAMFilterData::ParseFilterData short of manually - * parsing out the REGFILTER2 struct from the binary blob. - */ -[ - object, - uuid(97f7c4d4-547b-4a5f-8332-536430ad2e4d), - pointer_default(unique) -] -interface IAMFilterData : IUnknown -{ - typedef [unique] IAMFilterData *LPIAMFILTERDATA; - - HRESULT ParseFilterData( - [in] BYTE * rgbFilterData, - [in] ULONG cb, - [out] BYTE ** prgbRegFilter2); - - HRESULT CreateFilterData( - [in] REGFILTER2 * prf2, - [out] BYTE ** prgbFilterData, - [out] ULONG * pcb); -} diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c index 20c7e3a..d78f643 100644 --- a/dlls/quartz/filtermapper.c +++ b/dlls/quartz/filtermapper.c @@ -37,7 +37,7 @@ #include "wine/unicode.h" #include "uuids.h" #include "initguid.h" -#include "fil_data.h" +#include "wine/fil_data.h"
#include "wine/debug.h"
diff --git a/dlls/quartz/tests/Makefile.in b/dlls/quartz/tests/Makefile.in index 4f54666..6b880c3 100644 --- a/dlls/quartz/tests/Makefile.in +++ b/dlls/quartz/tests/Makefile.in @@ -12,7 +12,6 @@ C_SRCS = \ referenceclock.c \ videorenderer.c
-IDL_SRCS = fil_data.idl
RC_SRCS = \ rsrc.rc diff --git a/dlls/quartz/tests/fil_data.idl b/dlls/quartz/tests/fil_data.idl deleted file mode 100644 index ab93499..0000000 --- a/dlls/quartz/tests/fil_data.idl +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2009 Vitaliy Margolen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#pragma makedep header - -import "objidl.idl"; -import "strmif.idl"; -import "unknwn.idl"; - - -/***************************************************************************** - * IAMFilterData interface - * - * Notes: - * - This interface is deprecated and IFilterMapper2 should be used instead. - * - There is no full replacement for IAMFilterData::ParseFilterData short of manually - * parsing out the REGFILTER2 struct from the binary blob. - */ -[ - object, - uuid(97f7c4d4-547b-4a5f-8332-536430ad2e4d), - pointer_default(unique) -] -interface IAMFilterData : IUnknown -{ - typedef [unique] IAMFilterData *LPIAMFILTERDATA; - - HRESULT ParseFilterData( - [in] BYTE * rgbFilterData, - [in] ULONG cb, - [out] BYTE ** prgbRegFilter2); - - HRESULT CreateFilterData( - [in] REGFILTER2 * prf2, - [out] BYTE ** prgbFilterData, - [out] ULONG * pcb); -} diff --git a/dlls/quartz/tests/filtermapper.c b/dlls/quartz/tests/filtermapper.c index 5a43785..7b6a018 100644 --- a/dlls/quartz/tests/filtermapper.c +++ b/dlls/quartz/tests/filtermapper.c @@ -26,7 +26,7 @@ #include "dshow.h" #include "winternl.h"
-#include "fil_data.h" +#include "wine/fil_data.h"
DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
diff --git a/include/Makefile.in b/include/Makefile.in index 39f2691..995544a 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -664,6 +664,7 @@ SOURCES = \ windowsx.h \ wine/debug.h \ wine/exception.h \ + wine/fil_data.idl \ wine/itss.idl \ wine/library.h \ wine/svcctl.idl \ diff --git a/dlls/dxdiagn/fil_data.idl b/include/wine/fil_data.idl similarity index 67% rename from dlls/dxdiagn/fil_data.idl rename to include/wine/fil_data.idl index 7e37a75..19dfa8a 100644 --- a/dlls/dxdiagn/fil_data.idl +++ b/include/wine/fil_data.idl @@ -16,16 +16,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#pragma makedep header - -import "objidl.idl"; -import "strmif.idl"; import "unknwn.idl"; +import "strmif.idl";
- -/***************************************************************************** - * IAMFilterData interface - */ [ object, uuid(97f7c4d4-547b-4a5f-8332-536430ad2e4d), @@ -33,15 +26,7 @@ import "unknwn.idl"; ] interface IAMFilterData : IUnknown { - typedef [unique] IAMFilterData *LPIAMFILTERDATA; + HRESULT ParseFilterData( [in] BYTE *data, [in] ULONG size, [out] BYTE **regfilter );
- HRESULT ParseFilterData( - [in] BYTE * rgbFilterData, - [in] ULONG cb, - [out] BYTE ** prgbRegFilter2); - - HRESULT CreateFilterData( - [in] REGFILTER2 * prf2, - [out] BYTE ** prgbFilterData, - [out] ULONG * pcb); + HRESULT CreateFilterData( [in] REGFILTER2 *regfilter, [out] BYTE **data, [out] ULONG *size ); }
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at https://testbot.winehq.org/JobDetails.pl?Key=39362
Your paranoid android.
=== w2008s64 (64 bit referenceclock) === TestBot process got stuck or died unexpectedly The previous 1 run(s) terminated abnormally