[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