shell32: Added a stub for IShellImageDataFactory.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2017-02-05 22:25:09 +03:00 committed by Alexandre Julliard
parent 73a0ddfa47
commit 3f4999cc6a
4 changed files with 102 additions and 0 deletions

View File

@ -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; }

View File

@ -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;

View File

@ -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);
}

View File

@ -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);