[4/4] taskschd: Implement IRegisteredTask::get_Path.

Dmitry Timoshkov dmitry at baikal.ru
Tue Apr 8 01:50:01 CDT 2014


---
 dlls/taskschd/regtask.c         | 12 ++++++++++--
 dlls/taskschd/tests/scheduler.c | 34 ++++++++++++++++++++++++++--------
 2 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/dlls/taskschd/regtask.c b/dlls/taskschd/regtask.c
index 817ba36..2953c6e 100644
--- a/dlls/taskschd/regtask.c
+++ b/dlls/taskschd/regtask.c
@@ -138,8 +138,16 @@ static HRESULT WINAPI regtask_get_Name(IRegisteredTask *iface, BSTR *name)
 
 static HRESULT WINAPI regtask_get_Path(IRegisteredTask *iface, BSTR *path)
 {
-    FIXME("%p,%p: stub\n", iface, path);
-    return E_NOTIMPL;
+    RegisteredTask *regtask = impl_from_IRegisteredTask(iface);
+
+    TRACE("%p,%p\n", iface, path);
+
+    if (!path) return E_POINTER;
+
+    *path = SysAllocString(regtask->path);
+    if (!*path) return E_OUTOFMEMORY;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI regtask_get_State(IRegisteredTask *iface, TASK_STATE *state)
diff --git a/dlls/taskschd/tests/scheduler.c b/dlls/taskschd/tests/scheduler.c
index d24e1ca..8fcc845 100644
--- a/dlls/taskschd/tests/scheduler.c
+++ b/dlls/taskschd/tests/scheduler.c
@@ -812,21 +812,18 @@ todo_wine
     ok(!lstrcmpW(bstr, Task1), "expected Task1, got %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
     hr = IRegisteredTask_get_Path(task1, &bstr);
-todo_wine
     ok(hr == S_OK, "get_Path error %#x\n", hr);
-    /* FIXME: Remove once implemented */
-    if (hr != S_OK)
-    {
-        ITaskFolder_DeleteTask(root, Wine_Task1, 0);
-        goto failed;
-    }
     ok(!lstrcmpW(bstr, Wine_Task1), "expected \\Wine\\Task1, got %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
     hr = IRegisteredTask_get_State(task1, &state);
+todo_wine
     ok(hr == S_OK, "get_State error %#x\n", hr);
+todo_wine
     ok(state == TASK_STATE_DISABLED, "expected TASK_STATE_DISABLED, got %d\n", state);
     hr = IRegisteredTask_get_Enabled(task1, &vbool);
+todo_wine
     ok(hr == S_OK, "get_Enabled error %#x\n", hr);
+todo_wine
     ok(vbool == VARIANT_FALSE, "expected VARIANT_FALSE, got %d\n", vbool);
 
     IRegisteredTask_Release(task1);
@@ -848,15 +845,20 @@ todo_wine
     ok(!lstrcmpW(bstr, Wine_Task2), "expected \\Wine\\Task2, got %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
     hr = IRegisteredTask_get_State(task2, &state);
+todo_wine
     ok(hr == S_OK, "get_State error %#x\n", hr);
+todo_wine
     ok(state == TASK_STATE_READY, "expected TASK_STATE_READY, got %d\n", state);
     hr = IRegisteredTask_get_Enabled(task2, &vbool);
+todo_wine
     ok(hr == S_OK, "get_Enabled error %#x\n", hr);
+todo_wine
     ok(vbool == VARIANT_TRUE, "expected VARIANT_TRUE, got %d\n", vbool);
 
     IRegisteredTask_Release(task2);
 
     hr = ITaskFolder_GetTask(root, NULL, &task1);
+todo_wine
     ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got %#x\n", hr);
 
     hr = ITaskFolder_GetTask(root, Wine_Task1, NULL);
@@ -874,19 +876,28 @@ todo_wine
     ok(!lstrcmpW(bstr, Wine_Task1), "expected \\Wine\\Task1, got %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
     hr = IRegisteredTask_get_State(task1, &state);
+todo_wine
     ok(hr == S_OK, "get_State error %#x\n", hr);
+todo_wine
     ok(state == TASK_STATE_DISABLED, "expected TASK_STATE_DISABLED, got %d\n", state);
     hr = IRegisteredTask_get_Enabled(task1, &vbool);
+todo_wine
     ok(hr == S_OK, "get_Enabled error %#x\n", hr);
+todo_wine
     ok(vbool == VARIANT_FALSE, "expected VARIANT_FALSE, got %d\n", vbool);
 
     hr = IRegisteredTask_put_Enabled(task1, VARIANT_TRUE);
+todo_wine
     ok(hr == S_OK, "put_Enabled error %#x\n", hr);
     hr = IRegisteredTask_get_State(task1, &state);
+todo_wine
     ok(hr == S_OK, "get_State error %#x\n", hr);
+todo_wine
     ok(state == TASK_STATE_READY, "expected TASK_STATE_READY, got %d\n", state);
     hr = IRegisteredTask_get_Enabled(task1, &vbool);
+todo_wine
     ok(hr == S_OK, "get_Enabled error %#x\n", hr);
+todo_wine
     ok(vbool == VARIANT_TRUE, "expected VARIANT_TRUE, got %d\n", vbool);
 
     IRegisteredTask_Release(task1);
@@ -903,15 +914,20 @@ todo_wine
     ok(!lstrcmpW(bstr, Wine_Task2), "expected \\Wine\\Task2, got %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
     hr = IRegisteredTask_get_State(task2, &state);
+todo_wine
     ok(hr == S_OK, "get_State error %#x\n", hr);
+todo_wine
     ok(state == TASK_STATE_READY, "expected TASK_STATE_READY, got %d\n", state);
     hr = IRegisteredTask_get_Enabled(task2, &vbool);
+todo_wine
     ok(hr == S_OK, "get_Enabled error %#x\n", hr);
+todo_wine
     ok(vbool == VARIANT_TRUE, "expected VARIANT_TRUE, got %d\n", vbool);
 
     IRegisteredTask_Release(task2);
 
     hr = ITaskFolder_DeleteTask(folder, NULL, 0);
+todo_wine
     ok(hr == HRESULT_FROM_WIN32(ERROR_DIR_NOT_EMPTY), "expected ERROR_DIR_NOT_EMPTY, got %#x\n", hr);
 
     hr = ITaskFolder_DeleteTask(root, Wine_Task1, 0);
@@ -923,8 +939,10 @@ todo_wine
     ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "expected ERROR_FILE_NOT_FOUND, got %#x\n", hr);
 
     hr = ITaskFolder_RegisterTask(root, NULL, xmlW, TASK_CREATE, v_null, v_null, TASK_LOGON_NONE, v_null, &task1);
+todo_wine
     ok(hr == S_OK, "RegisterTask error %#x\n", hr);
-
+    /* FIXME: Remove once implemented */
+    if (hr != S_OK) goto failed;
     hr = IRegisteredTask_get_Name(task1, &bstr);
     ok(hr == S_OK, "get_Name error %#x\n", hr);
     hr = IIDFromString(bstr, &iid);
-- 
1.9.1




More information about the wine-patches mailing list