Dmitry Timoshkov : taskschd: Implement ITaskFolder::DeleteFolder.

Alexandre Julliard julliard at winehq.org
Mon Jan 27 13:32:51 CST 2014


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

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Mon Jan 20 16:04:58 2014 +0900

taskschd: Implement ITaskFolder::DeleteFolder.

---

 dlls/taskschd/folder.c |   33 +++++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/dlls/taskschd/folder.c b/dlls/taskschd/folder.c
index cb285fd..9114417 100644
--- a/dlls/taskschd/folder.c
+++ b/dlls/taskschd/folder.c
@@ -137,6 +137,29 @@ static HRESULT reg_open_folder(const WCHAR *path, HKEY *hfolder)
     return HRESULT_FROM_WIN32(ret);
 }
 
+static HRESULT reg_delete_folder(const WCHAR *path, const WCHAR *name)
+{
+    HKEY hroot, hfolder;
+    DWORD ret;
+
+    ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, root, &hroot);
+    if (ret) return HRESULT_FROM_WIN32(ret);
+
+    while (*path == '\\') path++;
+    ret = RegOpenKeyExW(hroot, path, 0, DELETE, &hfolder);
+
+    RegCloseKey(hroot);
+
+    while (*name == '\\') name++;
+    if (ret == ERROR_SUCCESS)
+    {
+        ret = RegDeleteKeyW(hfolder, name);
+        RegCloseKey(hfolder);
+    }
+
+    return HRESULT_FROM_WIN32(ret);
+}
+
 static inline void reg_close_folder(HKEY hfolder)
 {
     RegCloseKey(hfolder);
@@ -176,8 +199,14 @@ static HRESULT WINAPI TaskFolder_CreateFolder(ITaskFolder *iface, BSTR name, VAR
 
 static HRESULT WINAPI TaskFolder_DeleteFolder(ITaskFolder *iface, BSTR name, LONG flags)
 {
-    FIXME("%p,%s,%x: stub\n", iface, debugstr_w(name), flags);
-    return E_NOTIMPL;
+    TaskFolder *folder = impl_from_ITaskFolder(iface);
+
+    TRACE("%p,%s,%x\n", iface, debugstr_w(name), flags);
+
+    if (flags)
+        FIXME("unsupported flags %x\n", flags);
+
+    return reg_delete_folder(folder->path, name);
 }
 
 static HRESULT WINAPI TaskFolder_GetTask(ITaskFolder *iface, BSTR path, IRegisteredTask **task)




More information about the wine-cvs mailing list