[3/4] taskschd: Add ITaskSettings stub implementation.
Dmitry Timoshkov
dmitry at baikal.ru
Tue Feb 11 01:20:26 CST 2014
---
dlls/taskschd/task.c | 392 +++++++++++++++++++++++++++++++++++++++-
dlls/taskschd/tests/scheduler.c | 12 +-
2 files changed, 396 insertions(+), 8 deletions(-)
diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c
index b465266..85fa30c 100644
--- a/dlls/taskschd/task.c
+++ b/dlls/taskschd/task.c
@@ -34,6 +34,391 @@ WINE_DEFAULT_DEBUG_CHANNEL(taskschd);
typedef struct
{
+ ITaskSettings ITaskSettings_iface;
+ LONG ref;
+} TaskSettings;
+
+static inline TaskSettings *impl_from_ITaskSettings(ITaskSettings *iface)
+{
+ return CONTAINING_RECORD(iface, TaskSettings, ITaskSettings_iface);
+}
+
+static ULONG WINAPI TaskSettings_AddRef(ITaskSettings *iface)
+{
+ TaskSettings *taskset = impl_from_ITaskSettings(iface);
+ return InterlockedIncrement(&taskset->ref);
+}
+
+static ULONG WINAPI TaskSettings_Release(ITaskSettings *iface)
+{
+ TaskSettings *taskset = impl_from_ITaskSettings(iface);
+ LONG ref = InterlockedDecrement(&taskset->ref);
+
+ if (!ref)
+ {
+ TRACE("destroying %p\n", iface);
+ heap_free(taskset);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI TaskSettings_QueryInterface(ITaskSettings *iface, REFIID riid, void **obj)
+{
+ if (!riid || !obj) return E_INVALIDARG;
+
+ TRACE("%p,%s,%p\n", iface, debugstr_guid(riid), obj);
+
+ if (IsEqualGUID(riid, &IID_ITaskSettings) ||
+ IsEqualGUID(riid, &IID_IDispatch) ||
+ IsEqualGUID(riid, &IID_IUnknown))
+ {
+ ITaskSettings_AddRef(iface);
+ *obj = iface;
+ return S_OK;
+ }
+
+ FIXME("interface %s is not implemented\n", debugstr_guid(riid));
+ *obj = NULL;
+ return E_NOINTERFACE;
+}
+
+static HRESULT WINAPI TaskSettings_GetTypeInfoCount(ITaskSettings *iface, UINT *count)
+{
+ FIXME("%p,%p: stub\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_GetTypeInfo(ITaskSettings *iface, UINT index, LCID lcid, ITypeInfo **info)
+{
+ FIXME("%p,%u,%u,%p: stub\n", iface, index, lcid, info);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_GetIDsOfNames(ITaskSettings *iface, REFIID riid, LPOLESTR *names,
+ UINT count, LCID lcid, DISPID *dispid)
+{
+ FIXME("%p,%s,%p,%u,%u,%p: stub\n", iface, debugstr_guid(riid), names, count, lcid, dispid);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_Invoke(ITaskSettings *iface, DISPID dispid, REFIID riid, LCID lcid, WORD flags,
+ DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *argerr)
+{
+ FIXME("%p,%d,%s,%04x,%04x,%p,%p,%p,%p: stub\n", iface, dispid, debugstr_guid(riid), lcid, flags,
+ params, result, excepinfo, argerr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_AllowDemandStart(ITaskSettings *iface, VARIANT_BOOL *allow)
+{
+ FIXME("%p,%p: stub\n", iface, allow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_AllowDemandStart(ITaskSettings *iface, VARIANT_BOOL allow)
+{
+ FIXME("%p,%d: stub\n", iface, allow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_RestartInterval(ITaskSettings *iface, BSTR *interval)
+{
+ FIXME("%p,%p: stub\n", iface, interval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_RestartInterval(ITaskSettings *iface, BSTR interval)
+{
+ TRACE("%p,%s\n", iface, debugstr_w(interval));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_RestartCount(ITaskSettings *iface, INT *count)
+{
+ FIXME("%p,%p: stub\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_RestartCount(ITaskSettings *iface, INT count)
+{
+ FIXME("%p,%d: stub\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_MultipleInstances(ITaskSettings *iface, TASK_INSTANCES_POLICY *policy)
+{
+ FIXME("%p,%p: stub\n", iface, policy);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_MultipleInstances(ITaskSettings *iface, TASK_INSTANCES_POLICY policy)
+{
+ FIXME("%p,%d: stub\n", iface, policy);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_StopIfGoingOnBatteries(ITaskSettings *iface, VARIANT_BOOL *stop)
+{
+ FIXME("%p,%p: stub\n", iface, stop);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_StopIfGoingOnBatteries(ITaskSettings *iface, VARIANT_BOOL stop)
+{
+ FIXME("%p,%d: stub\n", iface, stop);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_DisallowStartIfOnBatteries(ITaskSettings *iface, VARIANT_BOOL *disallow)
+{
+ FIXME("%p,%p: stub\n", iface, disallow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_DisallowStartIfOnBatteries(ITaskSettings *iface, VARIANT_BOOL disallow)
+{
+ FIXME("%p,%d: stub\n", iface, disallow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_AllowHardTerminate(ITaskSettings *iface, VARIANT_BOOL *allow)
+{
+ FIXME("%p,%p: stub\n", iface, allow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_AllowHardTerminate(ITaskSettings *iface, VARIANT_BOOL allow)
+{
+ FIXME("%p,%d: stub\n", iface, allow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_StartWhenAvailable(ITaskSettings *iface, VARIANT_BOOL *start)
+{
+ FIXME("%p,%p: stub\n", iface, start);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_StartWhenAvailable(ITaskSettings *iface, VARIANT_BOOL start)
+{
+ FIXME("%p,%d: stub\n", iface, start);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_XmlText(ITaskSettings *iface, BSTR *xml)
+{
+ FIXME("%p,%p: stub\n", iface, xml);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_XmlText(ITaskSettings *iface, BSTR xml)
+{
+ TRACE("%p,%s\n", iface, debugstr_w(xml));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_RunOnlyIfNetworkAvailable(ITaskSettings *iface, VARIANT_BOOL *run)
+{
+ FIXME("%p,%p: stub\n", iface, run);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_RunOnlyIfNetworkAvailable(ITaskSettings *iface, VARIANT_BOOL run)
+{
+ FIXME("%p,%d: stub\n", iface, run);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_ExecutionTimeLimit(ITaskSettings *iface, BSTR *limit)
+{
+ FIXME("%p,%p: stub\n", iface, limit);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_ExecutionTimeLimit(ITaskSettings *iface, BSTR limit)
+{
+ TRACE("%p,%s\n", iface, debugstr_w(limit));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_Enabled(ITaskSettings *iface, VARIANT_BOOL *enabled)
+{
+ FIXME("%p,%p: stub\n", iface, enabled);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_Enabled(ITaskSettings *iface, VARIANT_BOOL enabled)
+{
+ FIXME("%p,%d: stub\n", iface, enabled);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_DeleteExpiredTaskAfter(ITaskSettings *iface, BSTR *delay)
+{
+ FIXME("%p,%p: stub\n", iface, delay);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_DeleteExpiredTaskAfter(ITaskSettings *iface, BSTR delay)
+{
+ TRACE("%p,%s\n", iface, debugstr_w(delay));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_Priority(ITaskSettings *iface, INT *priority)
+{
+ FIXME("%p,%p: stub\n", iface, priority);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_Priority(ITaskSettings *iface, INT priority)
+{
+ FIXME("%p,%d: stub\n", iface, priority);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_Compatibility(ITaskSettings *iface, TASK_COMPATIBILITY *level)
+{
+ FIXME("%p,%p: stub\n", iface, level);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_Compatibility(ITaskSettings *iface, TASK_COMPATIBILITY level)
+{
+ FIXME("%p,%d: stub\n", iface, level);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_Hidden(ITaskSettings *iface, VARIANT_BOOL *hidden)
+{
+ FIXME("%p,%p: stub\n", iface, hidden);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_Hidden(ITaskSettings *iface, VARIANT_BOOL hidden)
+{
+ FIXME("%p,%d: stub\n", iface, hidden);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_IdleSettings(ITaskSettings *iface, IIdleSettings **settings)
+{
+ FIXME("%p,%p: stub\n", iface, settings);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_IdleSettings(ITaskSettings *iface, IIdleSettings *settings)
+{
+ FIXME("%p,%p: stub\n", iface, settings);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_RunOnlyIfIdle(ITaskSettings *iface, VARIANT_BOOL *run)
+{
+ FIXME("%p,%p: stub\n", iface, run);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_RunOnlyIfIdle(ITaskSettings *iface, VARIANT_BOOL run)
+{
+ FIXME("%p,%d: stub\n", iface, run);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_WakeToRun(ITaskSettings *iface, VARIANT_BOOL *wake)
+{
+ FIXME("%p,%p: stub\n", iface, wake);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_WakeToRun(ITaskSettings *iface, VARIANT_BOOL wake)
+{
+ FIXME("%p,%d: stub\n", iface, wake);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_get_NetworkSettings(ITaskSettings *iface, INetworkSettings **settings)
+{
+ FIXME("%p,%p: stub\n", iface, settings);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI TaskSettings_put_NetworkSettings(ITaskSettings *iface, INetworkSettings *settings)
+{
+ FIXME("%p,%p: stub\n", iface, settings);
+ return E_NOTIMPL;
+}
+
+static const ITaskSettingsVtbl TaskSettings_vtbl =
+{
+ TaskSettings_QueryInterface,
+ TaskSettings_AddRef,
+ TaskSettings_Release,
+ TaskSettings_GetTypeInfoCount,
+ TaskSettings_GetTypeInfo,
+ TaskSettings_GetIDsOfNames,
+ TaskSettings_Invoke,
+ TaskSettings_get_AllowDemandStart,
+ TaskSettings_put_AllowDemandStart,
+ TaskSettings_get_RestartInterval,
+ TaskSettings_put_RestartInterval,
+ TaskSettings_get_RestartCount,
+ TaskSettings_put_RestartCount,
+ TaskSettings_get_MultipleInstances,
+ TaskSettings_put_MultipleInstances,
+ TaskSettings_get_StopIfGoingOnBatteries,
+ TaskSettings_put_StopIfGoingOnBatteries,
+ TaskSettings_get_DisallowStartIfOnBatteries,
+ TaskSettings_put_DisallowStartIfOnBatteries,
+ TaskSettings_get_AllowHardTerminate,
+ TaskSettings_put_AllowHardTerminate,
+ TaskSettings_get_StartWhenAvailable,
+ TaskSettings_put_StartWhenAvailable,
+ TaskSettings_get_XmlText,
+ TaskSettings_put_XmlText,
+ TaskSettings_get_RunOnlyIfNetworkAvailable,
+ TaskSettings_put_RunOnlyIfNetworkAvailable,
+ TaskSettings_get_ExecutionTimeLimit,
+ TaskSettings_put_ExecutionTimeLimit,
+ TaskSettings_get_Enabled,
+ TaskSettings_put_Enabled,
+ TaskSettings_get_DeleteExpiredTaskAfter,
+ TaskSettings_put_DeleteExpiredTaskAfter,
+ TaskSettings_get_Priority,
+ TaskSettings_put_Priority,
+ TaskSettings_get_Compatibility,
+ TaskSettings_put_Compatibility,
+ TaskSettings_get_Hidden,
+ TaskSettings_put_Hidden,
+ TaskSettings_get_IdleSettings,
+ TaskSettings_put_IdleSettings,
+ TaskSettings_get_RunOnlyIfIdle,
+ TaskSettings_put_RunOnlyIfIdle,
+ TaskSettings_get_WakeToRun,
+ TaskSettings_put_WakeToRun,
+ TaskSettings_get_NetworkSettings,
+ TaskSettings_put_NetworkSettings
+};
+
+static HRESULT TaskSettings_create(ITaskSettings **obj)
+{
+ TaskSettings *taskset;
+
+ taskset = heap_alloc(sizeof(*taskset));
+ if (!taskset) return E_OUTOFMEMORY;
+
+ taskset->ITaskSettings_iface.lpVtbl = &TaskSettings_vtbl;
+ taskset->ref = 1;
+ *obj = &taskset->ITaskSettings_iface;
+
+ TRACE("created %p\n", *obj);
+
+ return S_OK;
+}
+
+typedef struct
+{
ITaskDefinition ITaskDefinition_iface;
LONG ref;
} TaskDefinition;
@@ -136,8 +521,11 @@ static HRESULT WINAPI TaskDefinition_put_Triggers(ITaskDefinition *iface, ITrigg
static HRESULT WINAPI TaskDefinition_get_Settings(ITaskDefinition *iface, ITaskSettings **settings)
{
- FIXME("%p,%p: stub\n", iface, settings);
- return E_NOTIMPL;
+ TRACE("%p,%p\n", iface, settings);
+
+ if (!settings) return E_POINTER;
+
+ return TaskSettings_create(settings);
}
static HRESULT WINAPI TaskDefinition_put_Settings(ITaskDefinition *iface, ITaskSettings *settings)
diff --git a/dlls/taskschd/tests/scheduler.c b/dlls/taskschd/tests/scheduler.c
index 60f5e43..258026c 100644
--- a/dlls/taskschd/tests/scheduler.c
+++ b/dlls/taskschd/tests/scheduler.c
@@ -886,13 +886,13 @@ static void test_settings_v1(ITaskDefinition *taskdef, struct settings *test, st
TASK_COMPATIBILITY compat;
hr = ITaskDefinition_get_Settings(taskdef, &set);
-todo_wine
ok(hr == S_OK, "get_Settings error %#x\n", hr);
- /* FIXME: Remove once implemented */
- if (hr != S_OK) return;
hr = ITaskSettings_get_AllowDemandStart(set, &vbool);
+todo_wine
ok(hr == S_OK, "expected S_OK, got %#x\n", hr);
+ /* FIXME: Remove once implemented */
+ if (hr != S_OK) return;
ok(vbool == def->allow_on_demand_start, "expected %d, got %d\n", def->allow_on_demand_start, vbool);
hr = ITaskSettings_get_RestartInterval(set, &bstr);
@@ -979,16 +979,16 @@ static void change_settings(ITaskDefinition *taskdef, struct settings *test)
ITaskSettings *set;
hr = ITaskDefinition_get_Settings(taskdef, &set);
-todo_wine
ok(hr == S_OK, "get_Settings error %#x\n", hr);
- /* FIXME: Remove once implemented */
- if (hr != S_OK) return;
if (!test->restart_interval[0])
hr = ITaskSettings_put_RestartInterval(set, NULL);
else
hr = ITaskSettings_put_RestartInterval(set, test->restart_interval);
+todo_wine
ok(hr == S_OK, "expected S_OK, got %#x\n", hr);
+ /* FIXME: Remove once implemented */
+ if (hr != S_OK) return;
hr = ITaskSettings_put_RestartCount(set, test->restart_count);
ok(hr == S_OK, "expected S_OK, got %#x\n", hr);
--
1.8.5.3
More information about the wine-patches
mailing list