Mariusz Pluciński : shell32: Add support of registry-registered folders to IKnownFolderManager:: GetFolder.

Alexandre Julliard julliard at winehq.org
Wed Jun 22 11:48:43 CDT 2011


Module: wine
Branch: master
Commit: ed29ff8c3b6a61192081bb4d88d6488435c71a6e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ed29ff8c3b6a61192081bb4d88d6488435c71a6e

Author: Mariusz Pluciński <vshader at gmail.com>
Date:   Wed Jun 22 15:10:15 2011 +0200

shell32: Add support of registry-registered folders to IKnownFolderManager::GetFolder.

---

 dlls/shell32/shellpath.c       |   16 +++++++++++++++-
 dlls/shell32/tests/shellpath.c |    3 ---
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index 0514647..ffd1aed 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -3400,11 +3400,25 @@ static HRESULT WINAPI foldermanager_GetFolderIds(
 static BOOL is_knownfolder( struct foldermanager *fm, const KNOWNFOLDERID *id )
 {
     UINT i;
+    HRESULT hr;
+    LPWSTR registryPath = NULL;
+    HKEY hKey;
 
+    /* TODO: move all entries from "CSIDL_Data" static array to registry known folder descriptions */
     for (i = 0; i < fm->num_ids; i++)
         if (IsEqualGUID( &fm->ids[i], id )) return TRUE;
 
-    return FALSE;
+    hr = get_known_folder_registry_path(id, &registryPath);
+    if(SUCCEEDED(hr))
+        hr = HRESULT_FROM_WIN32(RegOpenKeyExW(HKEY_LOCAL_MACHINE, registryPath, 0, 0, &hKey));
+
+    if(SUCCEEDED(hr))
+    {
+        hr = S_OK;
+        RegCloseKey(hKey);
+    }
+
+    return hr == S_OK;
 }
 
 static HRESULT WINAPI foldermanager_GetFolder(
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index 104e7d7..1b575fe 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -1172,14 +1172,11 @@ static void test_knownFolders(void)
             if(SUCCEEDED(hr))
             {
                 hr = IKnownFolderManager_GetFolder(mgr, &newFolderId, &folder);
-                todo_wine
                 ok(hr == S_OK, "failed to get known folder: 0x%08x\n", hr);
                 if(SUCCEEDED(hr))
                 {
                     hr = IKnownFolder_GetId(folder, &folderId);
-                    todo_wine
                     ok(hr == S_OK, "failed to get folder id: 0x%08x\n", hr);
-                    todo_wine
                     ok(IsEqualGUID(&folderId, &newFolderId)==TRUE, "invalid KNOWNFOLDERID returned\n");
 
                     hr = IKnownFolder_GetPath(folder, 0, &folderPath);




More information about the wine-cvs mailing list