Dmitry Timoshkov : mstask: Implement ITask::SetWorkItemData().
Alexandre Julliard
julliard at winehq.org
Wed Jun 13 16:10:51 CDT 2018
Module: wine
Branch: master
Commit: c00fbb5c0e2296758db9c7481ef0cf4df31a5c30
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c00fbb5c0e2296758db9c7481ef0cf4df31a5c30
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Wed Jun 13 12:04:15 2018 +0800
mstask: Implement ITask::SetWorkItemData().
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mstask/task.c | 36 ++++++++++++++++++++++++++++++------
1 file changed, 30 insertions(+), 6 deletions(-)
diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c
index 69f1e5f..54e4912 100644
--- a/dlls/mstask/task.c
+++ b/dlls/mstask/task.c
@@ -58,6 +58,8 @@ typedef struct
LONG ref;
ITaskDefinition *task;
IExecAction *action;
+ BYTE *data;
+ WORD data_count;
UUID uuid;
LPWSTR task_name;
HRESULT status;
@@ -87,6 +89,7 @@ static void TaskDestructor(TaskImpl *This)
if (This->action)
IExecAction_Release(This->action);
ITaskDefinition_Release(This->task);
+ heap_free(This->data);
heap_free(This->task_name);
heap_free(This->accountName);
heap_free(This->trigger);
@@ -809,13 +812,32 @@ static HRESULT WINAPI MSTASK_ITask_GetCreator(ITask *iface, LPWSTR *creator)
return hr;
}
-static HRESULT WINAPI MSTASK_ITask_SetWorkItemData(
- ITask* iface,
- WORD cBytes,
- BYTE rgbData[])
+static HRESULT WINAPI MSTASK_ITask_SetWorkItemData(ITask *iface, WORD count, BYTE data[])
{
- FIXME("(%p, %d, %p): stub\n", iface, cBytes, rgbData);
- return E_NOTIMPL;
+ TaskImpl *This = impl_from_ITask(iface);
+
+ TRACE("(%p, %u, %p)\n", iface, count, data);
+
+ if (count)
+ {
+ if (!data) return E_INVALIDARG;
+
+ heap_free(This->data);
+ This->data = heap_alloc(count);
+ if (!This->data) return E_OUTOFMEMORY;
+ memcpy(This->data, data, count);
+ This->data_count = count;
+ }
+ else
+ {
+ if (data) return E_INVALIDARG;
+
+ heap_free(This->data);
+ This->data = NULL;
+ This->data_count = 0;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI MSTASK_ITask_GetWorkItemData(
@@ -1865,6 +1887,8 @@ HRESULT TaskConstructor(ITaskService *service, const WCHAR *name, ITask **task)
This->IPersistFile_iface.lpVtbl = &MSTASK_IPersistFileVtbl;
This->ref = 1;
This->task = taskdef;
+ This->data = NULL;
+ This->data_count = 0;
This->task_name = heap_strdupW(task_name);
This->flags = 0;
This->status = SCHED_S_TASK_NOT_SCHEDULED;
More information about the wine-cvs
mailing list