Nikolay Sivov : shell32: Silence IMarshal requests to IKnownFolder and IKnownFolderManager.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 11 07:49:04 CDT 2015
Module: wine
Branch: master
Commit: 4367f4b2308d935daa76965c57d4da757403cc64
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4367f4b2308d935daa76965c57d4da757403cc64
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sat May 9 19:37:53 2015 +0300
shell32: Silence IMarshal requests to IKnownFolder and IKnownFolderManager.
---
dlls/shell32/shellpath.c | 12 ++++++++++++
dlls/shell32/tests/shellpath.c | 8 ++++++++
2 files changed, 20 insertions(+)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index 5753bb6..331db1f 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -5024,11 +5024,17 @@ static HRESULT WINAPI knownfolder_QueryInterface(
TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppv );
+ *ppv = NULL;
if ( IsEqualGUID( riid, &IID_IKnownFolder ) ||
IsEqualGUID( riid, &IID_IUnknown ) )
{
*ppv = iface;
}
+ else if ( IsEqualGUID( riid, &IID_IMarshal ) )
+ {
+ TRACE("IID_IMarshal returning NULL.\n");
+ return E_NOINTERFACE;
+ }
else
{
FIXME("interface %s not implemented\n", debugstr_guid(riid));
@@ -5416,11 +5422,17 @@ static HRESULT WINAPI foldermanager_QueryInterface(
TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppv );
+ *ppv = NULL;
if ( IsEqualGUID( riid, &IID_IKnownFolderManager ) ||
IsEqualGUID( riid, &IID_IUnknown ) )
{
*ppv = iface;
}
+ else if ( IsEqualGUID( riid, &IID_IMarshal ) )
+ {
+ TRACE("IID_IMarshal returning NULL.\n");
+ return E_NOINTERFACE;
+ }
else
{
FIXME("interface %s not implemented\n", debugstr_guid(riid));
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index c2ce198..ec21ce7 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -2075,8 +2075,13 @@ static void test_knownFolders(void)
win_skip("IKnownFolderManager unavailable\n");
else
{
+ IUnknown *unk;
+
ok(hr == S_OK, "failed to create KnownFolderManager instance: 0x%08x\n", hr);
+ hr = IKnownFolderManager_QueryInterface(mgr, &IID_IMarshal, (void**)&unk);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
hr = IKnownFolderManager_FolderIdFromCsidl(mgr, CSIDL_WINDOWS, &folderId);
ok(hr == S_OK, "failed to convert CSIDL to KNOWNFOLDERID: 0x%08x\n", hr);
ok(IsEqualGUID(&folderId, &FOLDERID_Windows)==TRUE, "invalid KNOWNFOLDERID returned\n");
@@ -2089,6 +2094,9 @@ static void test_knownFolders(void)
ok(hr == S_OK, "failed to get known folder: 0x%08x\n", hr);
if(SUCCEEDED(hr))
{
+ hr = IKnownFolder_QueryInterface(folder, &IID_IMarshal, (void**)&unk);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
hr = IKnownFolder_GetCategory(folder, &cat);
ok(hr == S_OK, "failed to get folder category: 0x%08x\n", hr);
ok(cat==KF_CATEGORY_FIXED, "invalid folder category: %d\n", cat);
More information about the wine-cvs
mailing list