configure: Add check for valgrind/valgrind.h.
[wine] / include / mstask.idl
1 /*
2  * Task Scheduler Service interface
3  *
4  * Copyright (C) 2008 Google (Roy Shea)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  *
20  */
21
22 import "oaidl.idl";
23 import "oleidl.idl";
24
25 [
26     local,
27     object,
28     uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
29     pointer_default(unique)
30 ]
31 interface IEnumWorkItems : IUnknown
32 {
33     HRESULT Next(
34             [in]   ULONG celt,
35             [out]  LPWSTR **rgpwszNames,
36             [out]  ULONG *pceltFetched);
37
38     HRESULT Skip(
39             [in]  ULONG celt);
40
41     HRESULT Reset();
42
43     HRESULT Clone(
44             [out]  IEnumWorkItems **ppEnumWorkItems);
45 }
46
47 cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED")
48 typedef struct _PSP *HPROPSHEETPAGE;
49 cpp_quote("#define _HPROPSHEETPAGE_DEFINED")
50 cpp_quote("#endif")
51
52 [
53     local,
54     object,
55     uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
56     pointer_default(unique)
57 ]
58 interface IProvideTaskPage : IUnknown
59 {
60     typedef enum _TASKPAGE {
61         TASKPAGE_TASK       = 0,
62         TASKPAGE_SCHEDULE   = 1,
63         TASKPAGE_SETTINGS   = 2
64     } TASKPAGE;
65
66     HRESULT GetPage(
67             [in]   TASKPAGE tpType,
68             [in]   BOOL fPersistChanges,
69             [out]  HPROPSHEETPAGE *phPage);
70 }
71
72 [
73     local,
74     object,
75     uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
76     pointer_default(unique)
77 ]
78 interface ITaskTrigger : IUnknown
79 {
80     typedef enum _TASK_TRIGGER_TYPE {
81         TASK_TIME_TRIGGER_ONCE              = 0,
82         TASK_TIME_TRIGGER_DAILY             = 1,
83         TASK_TIME_TRIGGER_WEEKLY            = 2,
84         TASK_TIME_TRIGGER_MONTHLYDATE       = 3,
85         TASK_TIME_TRIGGER_MONTHLYDOW        = 4,
86         TASK_EVENT_TRIGGER_ON_IDLE          = 5,
87         TASK_EVENT_TRIGGER_AT_SYSTEMSTART   = 6,
88         TASK_EVENT_TRIGGER_AT_LOGON         = 7
89     } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
90
91     typedef struct _DAILY {
92         WORD DaysInterval;
93     } DAILY;
94
95     typedef struct _WEEKLY {
96         WORD WeeksInterval;
97         WORD rgfDaysOfTheWeek;
98     } WEEKLY;
99
100     typedef struct _MONTHLYDATE {
101         DWORD rgfDays;
102         WORD rgfMonths;
103     } MONTHLYDATE;
104
105     typedef struct _MONTHLYDOW {
106         WORD wWhichWeek;
107         WORD rgfDaysOfTheWeek;
108         WORD rgfMonths;
109     } MONTHLYDOW;
110
111     typedef union _TRIGGER_TYPE_UNION {
112         DAILY Daily;
113         WEEKLY Weekly;
114         MONTHLYDATE MonthlyDate;
115         MONTHLYDOW MonthlyDOW;
116     } TRIGGER_TYPE_UNION;
117
118     typedef struct _TASK_TRIGGER {
119         WORD cbTriggerSize;
120         WORD Reserved1;
121         WORD wBeginYear;
122         WORD wBeginMonth;
123         WORD wBeginDay;
124         WORD wEndYear;
125         WORD wEndMonth;
126         WORD wEndDay;
127         WORD wStartHour;
128         WORD wStartMinute;
129         DWORD MinutesDuration;
130         DWORD MinutesInterval;
131         DWORD rgFlags;
132         TASK_TRIGGER_TYPE TriggerType;
133         TRIGGER_TYPE_UNION Type;
134         WORD Reserved2;
135         WORD wRandomMinutesInterval;
136     } TASK_TRIGGER, *PTASK_TRIGGER;
137
138     HRESULT SetTrigger(
139             [in]  const PTASK_TRIGGER pTrigger);
140
141     HRESULT GetTrigger(
142             [out]  PTASK_TRIGGER pTrigger);
143
144     HRESULT GetTriggerString(
145             [out]  LPWSTR *ppwszTrigger);
146 }
147
148 [
149     local,
150     object,
151     uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
152     pointer_default(unique)
153 ]
154 interface IScheduledWorkItem : IUnknown
155 {
156     HRESULT CreateTrigger(
157             [out]  WORD *piNewTrigger,
158             [out]  ITaskTrigger **ppTrigger);
159
160     HRESULT DeleteTrigger(
161             [in]  WORD iTrigger);
162
163     HRESULT GetTriggerCount(
164             [out]  WORD *plCount);
165
166     HRESULT GetTrigger(
167             [in]   WORD iTrigger,
168             [out]  ITaskTrigger **ppTrigger);
169
170     HRESULT GetTriggerString(
171             [in]   WORD iTrigger,
172             [out]  LPWSTR *ppwszTrigger);
173
174     HRESULT GetRunTimes(
175             [in]       const LPSYSTEMTIME pstBegin,
176             [in]       const LPSYSTEMTIME pstEnd,
177             [in, out]  WORD *pCount,
178             [out]      LPSYSTEMTIME *rgstTaskTimes);
179
180     HRESULT GetNextRunTime(
181             [out]  SYSTEMTIME *pstNextRun);
182
183     HRESULT SetIdleWait(
184             [in]  WORD wIdleMinutes,
185             [in]  WORD wDeadlineMinutes);
186
187     HRESULT GetIdleWait(
188             [out]  WORD *pwIdleMinutes,
189             [out]  WORD *pwDeadlineMinutes);
190
191     HRESULT Run();
192
193     HRESULT Terminate();
194
195     HRESULT EditWorkItem(
196             [in]  HWND hParent,
197             [in]  DWORD dwReserved);
198
199     HRESULT GetMostRecentRunTime(
200             [out]  SYSTEMTIME *pstLastRun);
201
202     HRESULT GetStatus(
203             [out]  HRESULT *phrStatus);
204
205     HRESULT GetExitCode(
206             [out]  DWORD *pdwExitCode);
207
208     HRESULT SetComment(
209             [in]  LPCWSTR pwszComment);
210
211     HRESULT GetComment(
212             [out]  LPWSTR *ppwszComment);
213
214     HRESULT SetCreator(
215             LPCWSTR pwszCreator);
216
217     HRESULT GetCreator(
218             [out]  LPWSTR *ppwszCreator);
219
220     HRESULT SetWorkItemData(
221             [in]  WORD cBytes,
222             [in]  BYTE rgbData[]);
223
224     HRESULT GetWorkItemData(
225             [out]  WORD *pcBytes,
226             [out]  BYTE **ppBytes);
227
228     HRESULT SetErrorRetryCount(
229             WORD wRetryCount);
230
231     HRESULT GetErrorRetryCount(
232             [out]  WORD *pwRetryCount);
233
234     HRESULT SetErrorRetryInterval(
235             WORD wRetryInterval);
236
237     HRESULT GetErrorRetryInterval(
238             [out]  WORD *pwRetryInterval);
239
240     HRESULT SetFlags(
241             DWORD dwFlags);
242
243     HRESULT GetFlags(
244             [out]  DWORD *pdwFlags);
245
246     HRESULT SetAccountInformation(
247             [in]  LPCWSTR pwszAccountName,
248             [in]  LPCWSTR pwszPassword);
249
250     HRESULT GetAccountInformation(
251             [out]  LPWSTR *ppwszAccountName);
252 }
253
254 [
255     local,
256     object,
257     uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
258     pointer_default(unique)
259 ]
260 interface ITask : IScheduledWorkItem
261 {
262     HRESULT SetApplicationName(
263             [in]  LPCWSTR pwszApplicationName);
264
265     HRESULT GetApplicationName(
266             [out]  LPWSTR *ppwszApplicationName);
267
268     HRESULT SetParameters(
269             [in]  LPCWSTR pwszParameters);
270
271     HRESULT GetParameters(
272             [out]  LPWSTR *ppwszParameters);
273
274     HRESULT SetWorkingDirectory(
275             [in]  LPCWSTR pwszWorkingDirectory);
276
277     HRESULT GetWorkingDirectory(
278             [in]  LPWSTR *ppwszWorkingDirectory);
279
280     HRESULT SetPriority(
281             [in]  DWORD dwPriority);
282
283     HRESULT GetPriority(
284             [out]  DWORD *pdwPriority);
285
286     HRESULT SetTaskFlags(
287             [in]  DWORD dwFlags);
288
289     HRESULT GetTaskFlags(
290             [out]  DWORD *pdwFlags);
291
292     HRESULT SetMaxRunTime(
293             [in]  DWORD dwMaxRunTime);
294
295     HRESULT GetMaxRunTime(
296             [out]  DWORD *pdwMaxRunTime);
297 }
298
299 [
300     local,
301     object,
302     uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
303     pointer_default(unique)
304 ]
305 interface ITaskScheduler : IUnknown
306 {
307     HRESULT SetTargetComputer(
308             [in]  LPCWSTR pwszComputer);
309
310     HRESULT GetTargetComputer(
311             [out]  LPWSTR *ppwszComputer);
312
313     HRESULT Enum(
314             [out]  IEnumWorkItems **ppEnumTasks);
315
316     HRESULT Activate(
317             [in]   LPCWSTR pwszName,
318             [in]   REFIID riid,
319             [out]  IUnknown **ppunk);
320
321     HRESULT Delete(
322             [in]  LPCWSTR pwszName);
323
324     HRESULT NewWorkItem(
325             [in]   LPCWSTR pwszTaskName,
326             [in]   REFCLSID rclsid,
327             [in]   REFIID riid,
328             [out]  IUnknown **ppunk);
329
330     HRESULT AddWorkItem(
331             [in]  LPCWSTR pwszTaskName,
332             [in]  IScheduledWorkItem *pWorkItem);
333
334     HRESULT IsOfType(
335             [in]  LPCWSTR pwszName,
336             [in]  REFIID riid);
337 }
338
339 [
340     uuid(148BD52A-A2AB-11CE-B11F-00AA00530503)
341 ]
342 coclass CTaskScheduler
343 {
344     [default] interface ITaskScheduler;
345 };
346
347
348 [
349     uuid(148BD520-A2AB-11CE-B11F-00AA00530503)
350 ]
351 coclass CTask
352 {
353     [default] interface ITask;
354 };