[PATCH] shell32: Added a stub for IShellImageDataFactory

Nikolay Sivov nsivov at codeweavers.com
Sun Feb 5 13:25:09 CST 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---

For https://bugs.winehq.org/show_bug.cgi?id=32414

 dlls/shell32/shell32_classes.idl |  6 +++
 dlls/shell32/shell32_main.h      |  2 +
 dlls/shell32/shellole.c          | 91 ++++++++++++++++++++++++++++++++++++++++
 dlls/uuid/uuid.c                 |  3 ++
 4 files changed, 102 insertions(+)

diff --git a/dlls/shell32/shell32_classes.idl b/dlls/shell32/shell32_classes.idl
index 68ce2b5797..cc57b2bab5 100644
--- a/dlls/shell32/shell32_classes.idl
+++ b/dlls/shell32/shell32_classes.idl
@@ -154,3 +154,9 @@ coclass KnownFolderManager { interface IKnownFolderManager; }
     threading(apartment),
     uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6)
 ] coclass DestinationList { interface ICustomDestinationList; }
+
+[
+    helpstring("Shell Image Data Factory"),
+    threading(apartment),
+    uuid(66e4e4fb-f385-4dd0-8d74-a2efd1bc6178)
+] coclass ShellImageDataFactory { interface IShellImageDataFactory; }
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 642fab75d4..10cd3a40dc 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -44,6 +44,8 @@
 extern HMODULE	huser32 DECLSPEC_HIDDEN;
 extern HINSTANCE shell32_hInstance DECLSPEC_HIDDEN;
 
+extern CLSID CLSID_ShellImageDataFactory;
+
 /* Iconcache */
 #define INVALID_INDEX -1
 void SIC_Destroy(void) DECLSPEC_HIDDEN;
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index dd54900cec..a68e73defb 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -36,6 +36,7 @@
 #include "shlobj.h"
 #include "shlguid.h"
 #include "shldisp.h"
+#include "shimgdata.h"
 #include "winreg.h"
 #include "winerror.h"
 
@@ -50,6 +51,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
 extern INT WINAPI SHStringFromGUIDW(REFGUID guid, LPWSTR lpszDest, INT cchMax);  /* shlwapi.24 */
+static HRESULT WINAPI ShellImageDataFactory_Constructor(IUnknown *outer, REFIID riid, void **obj);
 
 /**************************************************************************
  * Default ClassFactory types
@@ -84,6 +86,7 @@ static const struct {
 	{&CLSID_KnownFolderManager, KnownFolderManager_Constructor},
 	{&CLSID_Shell,          IShellDispatch_Constructor},
 	{&CLSID_DestinationList, CustomDestinationList_Constructor},
+	{&CLSID_ShellImageDataFactory, ShellImageDataFactory_Constructor},
 	{NULL, NULL}
 };
 
@@ -807,3 +810,91 @@ HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker **moniker)
     if (!moniker) return E_INVALIDARG;
     return CreateClassMoniker(&CLSID_QueryCancelAutoPlay, moniker);
 }
+
+/* IShellImageDataFactory */
+static HRESULT WINAPI ShellImageDataFactory_QueryInterface(IShellImageDataFactory *iface, REFIID riid, void **obj)
+{
+    TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), obj);
+
+    if (IsEqualIID(&IID_IShellImageDataFactory, riid) || IsEqualIID(&IID_IUnknown, riid))
+    {
+        *obj = iface;
+    }
+    else
+    {
+        FIXME("not implemented for %s\n", debugstr_guid(riid));
+        *obj = NULL;
+        return E_NOINTERFACE;
+    }
+
+    IUnknown_AddRef((IUnknown*)*obj);
+    return S_OK;
+}
+
+static ULONG WINAPI ShellImageDataFactory_AddRef(IShellImageDataFactory *iface)
+{
+    TRACE("(%p)\n", iface);
+
+    return 2;
+}
+
+static ULONG WINAPI ShellImageDataFactory_Release(IShellImageDataFactory *iface)
+{
+    TRACE("(%p)\n", iface);
+
+    return 1;
+}
+
+static HRESULT WINAPI ShellImageDataFactory_CreateIShellImageData(IShellImageDataFactory *iface, IShellImageData **data)
+{
+    FIXME("%p, %p: stub\n", iface, data);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ShellImageDataFactory_CreateImageFromFile(IShellImageDataFactory *iface, const WCHAR *path,
+    IShellImageData **data)
+{
+    FIXME("%p, %s, %p: stub\n", iface, debugstr_w(path), data);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ShellImageDataFactory_CreateImageFromStream(IShellImageDataFactory *iface, IStream *stream,
+    IShellImageData **data)
+{
+    FIXME("%p, %p, %p: stub\n", iface, stream, data);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ShellImageDataFactory_GetDataFormatFromPath(IShellImageDataFactory *iface, const WCHAR *path,
+    GUID *format)
+{
+    FIXME("%p, %s, %p: stub\n", iface, debugstr_w(path), format);
+
+    return E_NOTIMPL;
+}
+
+static const IShellImageDataFactoryVtbl ShellImageDataFactoryVtbl =
+{
+    ShellImageDataFactory_QueryInterface,
+    ShellImageDataFactory_AddRef,
+    ShellImageDataFactory_Release,
+    ShellImageDataFactory_CreateIShellImageData,
+    ShellImageDataFactory_CreateImageFromFile,
+    ShellImageDataFactory_CreateImageFromStream,
+    ShellImageDataFactory_GetDataFormatFromPath,
+};
+
+static IShellImageDataFactory ShellImageDataFactory = { &ShellImageDataFactoryVtbl };
+
+HRESULT WINAPI ShellImageDataFactory_Constructor(IUnknown *outer, REFIID riid, void **obj)
+{
+    TRACE("%p %s %p\n", outer, debugstr_guid(riid), obj);
+
+    if (outer)
+        return CLASS_E_NOAGGREGATION;
+
+    return IShellImageDataFactory_QueryInterface(&ShellImageDataFactory, riid, obj);
+}
diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c
index af96221400..4834deeae9 100644
--- a/dlls/uuid/uuid.c
+++ b/dlls/uuid/uuid.c
@@ -87,6 +87,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
 #include "tlogstg.h"
 #include "msdasc.h"
 #include "netcfgx.h"
+#include "shimgdata.h"
 
 /* FIXME: cguids declares GUIDs but does not define their values */
 
@@ -141,5 +142,7 @@ DEFINE_GUID(GUID_COMPARTMENT_PERSISTMENUENABLED,    0x575f3783,0x70c8,0x47c8,0xa
 DEFINE_GUID(GUID_COMPARTMENT_EMPTYCONTEXT,          0xd7487dbf,0x804e,0x41c5,0x89,0x4d,0xad,0x96,0xfd,0x4e,0xea,0x13);
 DEFINE_GUID(GUID_COMPARTMENT_TIPUISTATUS,           0x148ca3ec,0x0366,0x401c,0x8d,0x75,0xed,0x97,0x8d,0x85,0xfb,0xc9);
 
+DEFINE_GUID(CLSID_ShellImageDataFactory, 0x66e4e4fb,0xf385,0x4dd0,0x8d,0x74,0xa2,0xef,0xd1,0xbc,0x61,0x78);
+
 /* service identifiers not declared in headers */
 DEFINE_GUID(SID_SContainerDispatch,0xb722be00,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
-- 
2.11.0




More information about the wine-patches mailing list