reactos/sdk/include/psdk/mstask.idl

398 lines
9.7 KiB
Text

/*
* Task Scheduler Service interface
*
* Copyright (C) 2008 Google (Roy Shea)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
*/
import "oaidl.idl";
import "oleidl.idl";
#ifndef __WIDL__
#define threading(model)
#define progid(str)
#define vi_progid(str)
#endif
cpp_quote("#define TASK_SUNDAY 0x1")
cpp_quote("#define TASK_MONDAY 0x2")
cpp_quote("#define TASK_TUESDAY 0x4")
cpp_quote("#define TASK_WEDNESDAY 0x8")
cpp_quote("#define TASK_THURSDAY 0x10")
cpp_quote("#define TASK_FRIDAY 0x20")
cpp_quote("#define TASK_SATURDAY 0x40")
cpp_quote("#define TASK_FIRST_WEEK 1")
cpp_quote("#define TASK_SECOND_WEEK 2")
cpp_quote("#define TASK_THIRD_WEEK 3")
cpp_quote("#define TASK_FOURTH_WEEK 4")
cpp_quote("#define TASK_LAST_WEEK 5")
cpp_quote("#define TASK_JANUARY 0x1")
cpp_quote("#define TASK_FEBRUARY 0x2")
cpp_quote("#define TASK_MARCH 0x4")
cpp_quote("#define TASK_APRIL 0x8")
cpp_quote("#define TASK_MAY 0x10")
cpp_quote("#define TASK_JUNE 0x20")
cpp_quote("#define TASK_JULY 0x40")
cpp_quote("#define TASK_AUGUST 0x80")
cpp_quote("#define TASK_SEPTEMBER 0x100")
cpp_quote("#define TASK_OCTOBER 0x200")
cpp_quote("#define TASK_NOVEMBER 0x400")
cpp_quote("#define TASK_DECEMBER 0x800")
cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1")
cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2")
cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED 0x4")
#ifdef _MSC_VER
cpp_quote("DEFINE_GUID(CLSID_CTaskScheduler, 0x148bd52a, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);")
cpp_quote("DEFINE_GUID(CLSID_CTask, 0x148bd520, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);")
#endif
[
local,
object,
uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface IEnumWorkItems : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out] LPWSTR **rgpwszNames,
[out] ULONG *pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IEnumWorkItems **ppEnumWorkItems);
}
cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED")
typedef struct _PSP *HPROPSHEETPAGE;
cpp_quote("#define _HPROPSHEETPAGE_DEFINED")
cpp_quote("#endif")
[
local,
object,
uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
pointer_default(unique)
]
interface IProvideTaskPage : IUnknown
{
typedef enum _TASKPAGE {
TASKPAGE_TASK = 0,
TASKPAGE_SCHEDULE = 1,
TASKPAGE_SETTINGS = 2
} TASKPAGE;
HRESULT GetPage(
[in] TASKPAGE tpType,
[in] BOOL fPersistChanges,
[out] HPROPSHEETPAGE *phPage);
}
[
local,
object,
uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITaskTrigger : IUnknown
{
typedef enum _TASK_TRIGGER_TYPE {
TASK_TIME_TRIGGER_ONCE = 0,
TASK_TIME_TRIGGER_DAILY = 1,
TASK_TIME_TRIGGER_WEEKLY = 2,
TASK_TIME_TRIGGER_MONTHLYDATE = 3,
TASK_TIME_TRIGGER_MONTHLYDOW = 4,
TASK_EVENT_TRIGGER_ON_IDLE = 5,
TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6,
TASK_EVENT_TRIGGER_AT_LOGON = 7
} TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
typedef struct _DAILY {
WORD DaysInterval;
} DAILY;
typedef struct _WEEKLY {
WORD WeeksInterval;
WORD rgfDaysOfTheWeek;
} WEEKLY;
typedef struct _MONTHLYDATE {
DWORD rgfDays;
WORD rgfMonths;
} MONTHLYDATE;
typedef struct _MONTHLYDOW {
WORD wWhichWeek;
WORD rgfDaysOfTheWeek;
WORD rgfMonths;
} MONTHLYDOW;
typedef union _TRIGGER_TYPE_UNION {
DAILY Daily;
WEEKLY Weekly;
MONTHLYDATE MonthlyDate;
MONTHLYDOW MonthlyDOW;
} TRIGGER_TYPE_UNION;
typedef struct _TASK_TRIGGER {
WORD cbTriggerSize;
WORD Reserved1;
WORD wBeginYear;
WORD wBeginMonth;
WORD wBeginDay;
WORD wEndYear;
WORD wEndMonth;
WORD wEndDay;
WORD wStartHour;
WORD wStartMinute;
DWORD MinutesDuration;
DWORD MinutesInterval;
DWORD rgFlags;
TASK_TRIGGER_TYPE TriggerType;
TRIGGER_TYPE_UNION Type;
WORD Reserved2;
WORD wRandomMinutesInterval;
} TASK_TRIGGER, *PTASK_TRIGGER;
HRESULT SetTrigger(
[in] const PTASK_TRIGGER pTrigger);
HRESULT GetTrigger(
[out] PTASK_TRIGGER pTrigger);
HRESULT GetTriggerString(
[out] LPWSTR *ppwszTrigger);
}
[
local,
object,
uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
pointer_default(unique)
]
interface IScheduledWorkItem : IUnknown
{
HRESULT CreateTrigger(
[out] WORD *piNewTrigger,
[out] ITaskTrigger **ppTrigger);
HRESULT DeleteTrigger(
[in] WORD iTrigger);
HRESULT GetTriggerCount(
[out] WORD *plCount);
HRESULT GetTrigger(
[in] WORD iTrigger,
[out] ITaskTrigger **ppTrigger);
HRESULT GetTriggerString(
[in] WORD iTrigger,
[out] LPWSTR *ppwszTrigger);
HRESULT GetRunTimes(
[in] const LPSYSTEMTIME pstBegin,
[in] const LPSYSTEMTIME pstEnd,
[in, out] WORD *pCount,
[out] LPSYSTEMTIME *rgstTaskTimes);
HRESULT GetNextRunTime(
[out] SYSTEMTIME *pstNextRun);
HRESULT SetIdleWait(
[in] WORD wIdleMinutes,
[in] WORD wDeadlineMinutes);
HRESULT GetIdleWait(
[out] WORD *pwIdleMinutes,
[out] WORD *pwDeadlineMinutes);
HRESULT Run();
HRESULT Terminate();
HRESULT EditWorkItem(
[in] HWND hParent,
[in] DWORD dwReserved);
HRESULT GetMostRecentRunTime(
[out] SYSTEMTIME *pstLastRun);
HRESULT GetStatus(
[out] HRESULT *phrStatus);
HRESULT GetExitCode(
[out] DWORD *pdwExitCode);
HRESULT SetComment(
[in] LPCWSTR pwszComment);
HRESULT GetComment(
[out] LPWSTR *ppwszComment);
HRESULT SetCreator(
LPCWSTR pwszCreator);
HRESULT GetCreator(
[out] LPWSTR *ppwszCreator);
HRESULT SetWorkItemData(
[in] WORD cBytes,
[in] BYTE rgbData[]);
HRESULT GetWorkItemData(
[out] WORD *pcBytes,
[out] BYTE **ppBytes);
HRESULT SetErrorRetryCount(
WORD wRetryCount);
HRESULT GetErrorRetryCount(
[out] WORD *pwRetryCount);
HRESULT SetErrorRetryInterval(
WORD wRetryInterval);
HRESULT GetErrorRetryInterval(
[out] WORD *pwRetryInterval);
HRESULT SetFlags(
DWORD dwFlags);
HRESULT GetFlags(
[out] DWORD *pdwFlags);
HRESULT SetAccountInformation(
[in] LPCWSTR pwszAccountName,
[in] LPCWSTR pwszPassword);
HRESULT GetAccountInformation(
[out] LPWSTR *ppwszAccountName);
}
[
local,
object,
uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITask : IScheduledWorkItem
{
HRESULT SetApplicationName(
[in] LPCWSTR pwszApplicationName);
HRESULT GetApplicationName(
[out] LPWSTR *ppwszApplicationName);
HRESULT SetParameters(
[in] LPCWSTR pwszParameters);
HRESULT GetParameters(
[out] LPWSTR *ppwszParameters);
HRESULT SetWorkingDirectory(
[in] LPCWSTR pwszWorkingDirectory);
HRESULT GetWorkingDirectory(
[in] LPWSTR *ppwszWorkingDirectory);
HRESULT SetPriority(
[in] DWORD dwPriority);
HRESULT GetPriority(
[out] DWORD *pdwPriority);
HRESULT SetTaskFlags(
[in] DWORD dwFlags);
HRESULT GetTaskFlags(
[out] DWORD *pdwFlags);
HRESULT SetMaxRunTime(
[in] DWORD dwMaxRunTime);
HRESULT GetMaxRunTime(
[out] DWORD *pdwMaxRunTime);
}
[
local,
object,
uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITaskScheduler : IUnknown
{
HRESULT SetTargetComputer(
[in] LPCWSTR pwszComputer);
HRESULT GetTargetComputer(
[out] LPWSTR *ppwszComputer);
HRESULT Enum(
[out] IEnumWorkItems **ppEnumTasks);
HRESULT Activate(
[in] LPCWSTR pwszName,
[in] REFIID riid,
[out] IUnknown **ppunk);
HRESULT Delete(
[in] LPCWSTR pwszName);
HRESULT NewWorkItem(
[in] LPCWSTR pwszTaskName,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] IUnknown **ppunk);
HRESULT AddWorkItem(
[in] LPCWSTR pwszTaskName,
[in] IScheduledWorkItem *pWorkItem);
HRESULT IsOfType(
[in] LPCWSTR pwszName,
[in] REFIID riid);
}
[
threading(both),
uuid(148BD52A-A2AB-11CE-B11F-00AA00530503)
]
coclass CTaskScheduler
{
[default] interface ITaskScheduler;
};
[
threading(both),
uuid(148BD520-A2AB-11CE-B11F-00AA00530503)
]
coclass CTask
{
[default] interface ITask;
};