PageRenderTime 23ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/include/mstask.idl

https://github.com/wesgarner/wine
IDL | 385 lines | 291 code | 74 blank | 20 comment | 0 complexity | 1b044f264f6adababeb07bd85ad1da87 MD5 | raw file
  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. import "oaidl.idl";
  22. import "oleidl.idl";
  23. cpp_quote("#define TASK_SUNDAY 0x1")
  24. cpp_quote("#define TASK_MONDAY 0x2")
  25. cpp_quote("#define TASK_TUESDAY 0x4")
  26. cpp_quote("#define TASK_WEDNESDAY 0x8")
  27. cpp_quote("#define TASK_THURSDAY 0x10")
  28. cpp_quote("#define TASK_FRIDAY 0x20")
  29. cpp_quote("#define TASK_SATURDAY 0x40")
  30. cpp_quote("#define TASK_FIRST_WEEK 1")
  31. cpp_quote("#define TASK_SECOND_WEEK 2")
  32. cpp_quote("#define TASK_THIRD_WEEK 3")
  33. cpp_quote("#define TASK_FOURTH_WEEK 4")
  34. cpp_quote("#define TASK_LAST_WEEK 5")
  35. cpp_quote("#define TASK_JANUARY 0x1")
  36. cpp_quote("#define TASK_FEBRUARY 0x2")
  37. cpp_quote("#define TASK_MARCH 0x4")
  38. cpp_quote("#define TASK_APRIL 0x8")
  39. cpp_quote("#define TASK_MAY 0x10")
  40. cpp_quote("#define TASK_JUNE 0x20")
  41. cpp_quote("#define TASK_JULY 0x40")
  42. cpp_quote("#define TASK_AUGUST 0x80")
  43. cpp_quote("#define TASK_SEPTEMBER 0x100")
  44. cpp_quote("#define TASK_OCTOBER 0x200")
  45. cpp_quote("#define TASK_NOVEMBER 0x400")
  46. cpp_quote("#define TASK_DECEMBER 0x800")
  47. cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1")
  48. cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2")
  49. cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED 0x4")
  50. [
  51. local,
  52. object,
  53. uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
  54. pointer_default(unique)
  55. ]
  56. interface IEnumWorkItems : IUnknown
  57. {
  58. HRESULT Next(
  59. [in] ULONG celt,
  60. [out] LPWSTR **rgpwszNames,
  61. [out] ULONG *pceltFetched);
  62. HRESULT Skip(
  63. [in] ULONG celt);
  64. HRESULT Reset();
  65. HRESULT Clone(
  66. [out] IEnumWorkItems **ppEnumWorkItems);
  67. }
  68. cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED")
  69. typedef struct _PSP *HPROPSHEETPAGE;
  70. cpp_quote("#define _HPROPSHEETPAGE_DEFINED")
  71. cpp_quote("#endif")
  72. [
  73. local,
  74. object,
  75. uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
  76. pointer_default(unique)
  77. ]
  78. interface IProvideTaskPage : IUnknown
  79. {
  80. typedef enum _TASKPAGE {
  81. TASKPAGE_TASK = 0,
  82. TASKPAGE_SCHEDULE = 1,
  83. TASKPAGE_SETTINGS = 2
  84. } TASKPAGE;
  85. HRESULT GetPage(
  86. [in] TASKPAGE tpType,
  87. [in] BOOL fPersistChanges,
  88. [out] HPROPSHEETPAGE *phPage);
  89. }
  90. [
  91. local,
  92. object,
  93. uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
  94. pointer_default(unique)
  95. ]
  96. interface ITaskTrigger : IUnknown
  97. {
  98. typedef enum _TASK_TRIGGER_TYPE {
  99. TASK_TIME_TRIGGER_ONCE = 0,
  100. TASK_TIME_TRIGGER_DAILY = 1,
  101. TASK_TIME_TRIGGER_WEEKLY = 2,
  102. TASK_TIME_TRIGGER_MONTHLYDATE = 3,
  103. TASK_TIME_TRIGGER_MONTHLYDOW = 4,
  104. TASK_EVENT_TRIGGER_ON_IDLE = 5,
  105. TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6,
  106. TASK_EVENT_TRIGGER_AT_LOGON = 7
  107. } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
  108. typedef struct _DAILY {
  109. WORD DaysInterval;
  110. } DAILY;
  111. typedef struct _WEEKLY {
  112. WORD WeeksInterval;
  113. WORD rgfDaysOfTheWeek;
  114. } WEEKLY;
  115. typedef struct _MONTHLYDATE {
  116. DWORD rgfDays;
  117. WORD rgfMonths;
  118. } MONTHLYDATE;
  119. typedef struct _MONTHLYDOW {
  120. WORD wWhichWeek;
  121. WORD rgfDaysOfTheWeek;
  122. WORD rgfMonths;
  123. } MONTHLYDOW;
  124. typedef union _TRIGGER_TYPE_UNION {
  125. DAILY Daily;
  126. WEEKLY Weekly;
  127. MONTHLYDATE MonthlyDate;
  128. MONTHLYDOW MonthlyDOW;
  129. } TRIGGER_TYPE_UNION;
  130. typedef struct _TASK_TRIGGER {
  131. WORD cbTriggerSize;
  132. WORD Reserved1;
  133. WORD wBeginYear;
  134. WORD wBeginMonth;
  135. WORD wBeginDay;
  136. WORD wEndYear;
  137. WORD wEndMonth;
  138. WORD wEndDay;
  139. WORD wStartHour;
  140. WORD wStartMinute;
  141. DWORD MinutesDuration;
  142. DWORD MinutesInterval;
  143. DWORD rgFlags;
  144. TASK_TRIGGER_TYPE TriggerType;
  145. TRIGGER_TYPE_UNION Type;
  146. WORD Reserved2;
  147. WORD wRandomMinutesInterval;
  148. } TASK_TRIGGER, *PTASK_TRIGGER;
  149. HRESULT SetTrigger(
  150. [in] const PTASK_TRIGGER pTrigger);
  151. HRESULT GetTrigger(
  152. [out] PTASK_TRIGGER pTrigger);
  153. HRESULT GetTriggerString(
  154. [out] LPWSTR *ppwszTrigger);
  155. }
  156. [
  157. local,
  158. object,
  159. uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
  160. pointer_default(unique)
  161. ]
  162. interface IScheduledWorkItem : IUnknown
  163. {
  164. HRESULT CreateTrigger(
  165. [out] WORD *piNewTrigger,
  166. [out] ITaskTrigger **ppTrigger);
  167. HRESULT DeleteTrigger(
  168. [in] WORD iTrigger);
  169. HRESULT GetTriggerCount(
  170. [out] WORD *plCount);
  171. HRESULT GetTrigger(
  172. [in] WORD iTrigger,
  173. [out] ITaskTrigger **ppTrigger);
  174. HRESULT GetTriggerString(
  175. [in] WORD iTrigger,
  176. [out] LPWSTR *ppwszTrigger);
  177. HRESULT GetRunTimes(
  178. [in] const LPSYSTEMTIME pstBegin,
  179. [in] const LPSYSTEMTIME pstEnd,
  180. [in, out] WORD *pCount,
  181. [out] LPSYSTEMTIME *rgstTaskTimes);
  182. HRESULT GetNextRunTime(
  183. [out] SYSTEMTIME *pstNextRun);
  184. HRESULT SetIdleWait(
  185. [in] WORD wIdleMinutes,
  186. [in] WORD wDeadlineMinutes);
  187. HRESULT GetIdleWait(
  188. [out] WORD *pwIdleMinutes,
  189. [out] WORD *pwDeadlineMinutes);
  190. HRESULT Run();
  191. HRESULT Terminate();
  192. HRESULT EditWorkItem(
  193. [in] HWND hParent,
  194. [in] DWORD dwReserved);
  195. HRESULT GetMostRecentRunTime(
  196. [out] SYSTEMTIME *pstLastRun);
  197. HRESULT GetStatus(
  198. [out] HRESULT *phrStatus);
  199. HRESULT GetExitCode(
  200. [out] DWORD *pdwExitCode);
  201. HRESULT SetComment(
  202. [in] LPCWSTR pwszComment);
  203. HRESULT GetComment(
  204. [out] LPWSTR *ppwszComment);
  205. HRESULT SetCreator(
  206. LPCWSTR pwszCreator);
  207. HRESULT GetCreator(
  208. [out] LPWSTR *ppwszCreator);
  209. HRESULT SetWorkItemData(
  210. [in] WORD cBytes,
  211. [in] BYTE rgbData[]);
  212. HRESULT GetWorkItemData(
  213. [out] WORD *pcBytes,
  214. [out] BYTE **ppBytes);
  215. HRESULT SetErrorRetryCount(
  216. WORD wRetryCount);
  217. HRESULT GetErrorRetryCount(
  218. [out] WORD *pwRetryCount);
  219. HRESULT SetErrorRetryInterval(
  220. WORD wRetryInterval);
  221. HRESULT GetErrorRetryInterval(
  222. [out] WORD *pwRetryInterval);
  223. HRESULT SetFlags(
  224. DWORD dwFlags);
  225. HRESULT GetFlags(
  226. [out] DWORD *pdwFlags);
  227. HRESULT SetAccountInformation(
  228. [in] LPCWSTR pwszAccountName,
  229. [in] LPCWSTR pwszPassword);
  230. HRESULT GetAccountInformation(
  231. [out] LPWSTR *ppwszAccountName);
  232. }
  233. [
  234. local,
  235. object,
  236. uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
  237. pointer_default(unique)
  238. ]
  239. interface ITask : IScheduledWorkItem
  240. {
  241. HRESULT SetApplicationName(
  242. [in] LPCWSTR pwszApplicationName);
  243. HRESULT GetApplicationName(
  244. [out] LPWSTR *ppwszApplicationName);
  245. HRESULT SetParameters(
  246. [in] LPCWSTR pwszParameters);
  247. HRESULT GetParameters(
  248. [out] LPWSTR *ppwszParameters);
  249. HRESULT SetWorkingDirectory(
  250. [in] LPCWSTR pwszWorkingDirectory);
  251. HRESULT GetWorkingDirectory(
  252. [in] LPWSTR *ppwszWorkingDirectory);
  253. HRESULT SetPriority(
  254. [in] DWORD dwPriority);
  255. HRESULT GetPriority(
  256. [out] DWORD *pdwPriority);
  257. HRESULT SetTaskFlags(
  258. [in] DWORD dwFlags);
  259. HRESULT GetTaskFlags(
  260. [out] DWORD *pdwFlags);
  261. HRESULT SetMaxRunTime(
  262. [in] DWORD dwMaxRunTime);
  263. HRESULT GetMaxRunTime(
  264. [out] DWORD *pdwMaxRunTime);
  265. }
  266. [
  267. local,
  268. object,
  269. uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
  270. pointer_default(unique)
  271. ]
  272. interface ITaskScheduler : IUnknown
  273. {
  274. HRESULT SetTargetComputer(
  275. [in] LPCWSTR pwszComputer);
  276. HRESULT GetTargetComputer(
  277. [out] LPWSTR *ppwszComputer);
  278. HRESULT Enum(
  279. [out] IEnumWorkItems **ppEnumTasks);
  280. HRESULT Activate(
  281. [in] LPCWSTR pwszName,
  282. [in] REFIID riid,
  283. [out] IUnknown **ppunk);
  284. HRESULT Delete(
  285. [in] LPCWSTR pwszName);
  286. HRESULT NewWorkItem(
  287. [in] LPCWSTR pwszTaskName,
  288. [in] REFCLSID rclsid,
  289. [in] REFIID riid,
  290. [out] IUnknown **ppunk);
  291. HRESULT AddWorkItem(
  292. [in] LPCWSTR pwszTaskName,
  293. [in] IScheduledWorkItem *pWorkItem);
  294. HRESULT IsOfType(
  295. [in] LPCWSTR pwszName,
  296. [in] REFIID riid);
  297. }
  298. [
  299. uuid(148BD52A-A2AB-11CE-B11F-00AA00530503)
  300. ]
  301. coclass CTaskScheduler
  302. {
  303. [default] interface ITaskScheduler;
  304. };
  305. [
  306. uuid(148BD520-A2AB-11CE-B11F-00AA00530503)
  307. ]
  308. coclass CTask
  309. {
  310. [default] interface ITask;
  311. };