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