windows-nt/Source/XPSP1/NT/admin/published/mstask/mstask.idl
2020-09-26 16:20:57 +08:00

500 lines
16 KiB
Plaintext

//+----------------------------------------------------------------------------
//
// Task Scheduler
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1996.
//
// File: mstask.idl
//
// Contents: ITaskTrigger, ITask, ITaskScheduler, IEnumWorkItems
// interfaces and related definitions
//
// History: 06-Sep-95 EricB created
//
//-----------------------------------------------------------------------------
import "oaidl.idl";
import "oleidl.idl";
// 148BD520-A2AB-11CE-B11F-00AA00530503 - Task object class ID
// 148BD52A-A2AB-11CE-B11F-00AA00530503 - Task Scheduler class ID
// A6B952F0-A4B1-11D0-997D-00AA006887EC - IScheduledWorkItem interface ID
// 148BD524-A2AB-11CE-B11F-00AA00530503 - ITask interface ID
// 148BD527-A2AB-11CE-B11F-00AA00530503 - ITaskScheduler interface ID
// 148BD528-A2AB-11CE-B11F-00AA00530503 - IEnumWorkItems interface ID
// 148BD52B-A2AB-11CE-B11F-00AA00530503 - ITaskTrigger interface ID
//+----------------------------------------------------------------------------
//
// Datatypes
//
//-----------------------------------------------------------------------------
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_FLAG_INTERACTIVE (0x1)")
cpp_quote("#define TASK_FLAG_DELETE_WHEN_DONE (0x2)")
cpp_quote("#define TASK_FLAG_DISABLED (0x4)")
cpp_quote("#define TASK_FLAG_START_ONLY_IF_IDLE (0x10)")
cpp_quote("#define TASK_FLAG_KILL_ON_IDLE_END (0x20)")
cpp_quote("#define TASK_FLAG_DONT_START_IF_ON_BATTERIES (0x40)")
cpp_quote("#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES (0x80)")
cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_DOCKED (0x100)")
cpp_quote("#define TASK_FLAG_HIDDEN (0x200)")
cpp_quote("#define TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET (0x400)")
cpp_quote("#define TASK_FLAG_RESTART_ON_IDLE_RESUME (0x800)")
cpp_quote("#define TASK_FLAG_SYSTEM_REQUIRED (0x1000)")
cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_LOGGED_ON (0x2000)")
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)")
//
// 1440 = 60 mins/hour * 24 hrs/day since a trigger/TASK could run all day at
// one minute intervals.
//
const int TASK_MAX_RUN_TIMES = 1440;
//
// The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
// which member of the TRIGGER_TYPE_UNION field to use.
//
typedef enum _TASK_TRIGGER_TYPE {
TASK_TIME_TRIGGER_ONCE = 0, // Ignore the Type field.
TASK_TIME_TRIGGER_DAILY = 1, // Use DAILY
TASK_TIME_TRIGGER_WEEKLY = 2, // Use WEEKLY
TASK_TIME_TRIGGER_MONTHLYDATE = 3, // Use MONTHLYDATE
TASK_TIME_TRIGGER_MONTHLYDOW = 4, // Use MONTHLYDOW
TASK_EVENT_TRIGGER_ON_IDLE = 5, // Ignore the Type field.
TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6, // Ignore the Type field.
TASK_EVENT_TRIGGER_AT_LOGON = 7 // Ignore the Type field.
} 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; // Structure size.
WORD Reserved1; // Reserved. Must be zero.
WORD wBeginYear; // Trigger beginning date year.
WORD wBeginMonth; // Trigger beginning date month.
WORD wBeginDay; // Trigger beginning date day.
WORD wEndYear; // Optional trigger ending date year.
WORD wEndMonth; // Optional trigger ending date month.
WORD wEndDay; // Optional trigger ending date day.
WORD wStartHour; // Run bracket start time hour.
WORD wStartMinute; // Run bracket start time minute.
DWORD MinutesDuration; // Duration of run bracket.
DWORD MinutesInterval; // Run bracket repetition interval.
DWORD rgFlags; // Trigger flags.
TASK_TRIGGER_TYPE TriggerType; // Trigger type.
TRIGGER_TYPE_UNION Type; // Trigger data.
WORD Reserved2; // Reserved. Must be zero.
WORD wRandomMinutesInterval; // Maximum number of random minutes
// after start time.
} TASK_TRIGGER, * PTASK_TRIGGER;
//+----------------------------------------------------------------------------
//
// Interfaces
//
//-----------------------------------------------------------------------------
//+----------------------------------------------------------------------------
//
// Interface: ITaskTrigger
//
// Synopsis: Trigger object interface. A Task object may contain several
// of these.
//
//-----------------------------------------------------------------------------
cpp_quote("// {148BD52B-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(IID_ITaskTrigger, 0x148BD52BL, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
interface ITaskTrigger;
[
local,
object,
uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITaskTrigger : IUnknown
{
// Methods:
HRESULT SetTrigger(
[in] const PTASK_TRIGGER pTrigger);
HRESULT GetTrigger(
[out] PTASK_TRIGGER pTrigger);
HRESULT GetTriggerString(
[out] LPWSTR * ppwszTrigger);
};
//+----------------------------------------------------------------------------
//
// Interface: IScheduledWorkItem
//
// Synopsis: Abstract base class for any runnable work item that can be
// scheduled by the task scheduler.
//
//-----------------------------------------------------------------------------
cpp_quote("// {a6b952f0-a4b1-11d0-997d-00aa006887ec}")
cpp_quote("DEFINE_GUID(IID_IScheduledWorkItem, 0xa6b952f0L, 0xa4b1, 0x11d0, 0x99, 0x7d, 0x00, 0xaa, 0x00, 0x68, 0x87, 0xec);")
interface IScheduledWorkItem;
[
local,
object,
uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
pointer_default(unique)
]
interface IScheduledWorkItem : IUnknown
{
// Methods concerning scheduling:
HRESULT CreateTrigger(
[out] WORD * piNewTrigger,
[out] ITaskTrigger ** ppTrigger);
HRESULT DeleteTrigger(
[in] WORD iTrigger);
HRESULT GetTriggerCount(
[out] WORD * pwCount);
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(
[in, out] SYSTEMTIME * pstNextRun);
HRESULT SetIdleWait(
[in] WORD wIdleMinutes,
[in] WORD wDeadlineMinutes);
HRESULT GetIdleWait(
[out] WORD * pwIdleMinutes,
[out] WORD * pwDeadlineMinutes);
// Other methods:
HRESULT Run(
void);
HRESULT Terminate(
void);
HRESULT EditWorkItem(
[in] HWND hParent,
[in] DWORD dwReserved);
HRESULT GetMostRecentRunTime(
[out] SYSTEMTIME * pstLastRun);
HRESULT GetStatus(
[out] HRESULT * phrStatus);
HRESULT GetExitCode(
[out] DWORD * pdwExitCode);
// Properties:
HRESULT SetComment(
[in] LPCWSTR pwszComment);
HRESULT GetComment(
[out] LPWSTR * ppwszComment);
HRESULT SetCreator(
[in] LPCWSTR pwszCreator);
HRESULT GetCreator(
[out] LPWSTR * ppwszCreator);
HRESULT SetWorkItemData(
[in] WORD cbData,
[in] BYTE rgbData[]);
HRESULT GetWorkItemData(
[out] WORD * pcbData,
[out] BYTE ** prgbData);
HRESULT SetErrorRetryCount(
[in] WORD wRetryCount);
HRESULT GetErrorRetryCount(
[out] WORD * pwRetryCount);
HRESULT SetErrorRetryInterval(
[in] WORD wRetryInterval);
HRESULT GetErrorRetryInterval(
[out] WORD * pwRetryInterval);
HRESULT SetFlags(
[in] DWORD dwFlags);
HRESULT GetFlags(
[out] DWORD * pdwFlags);
HRESULT SetAccountInformation(
[in] LPCWSTR pwszAccountName,
[in] LPCWSTR pwszPassword);
HRESULT GetAccountInformation(
[out] LPWSTR * ppwszAccountName);
}
//+----------------------------------------------------------------------------
//
// Interface: ITask
//
// Synopsis: Task object interface. The primary means of task object
// manipulation.
//
//-----------------------------------------------------------------------------
cpp_quote("// {148BD524-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(IID_ITask, 0x148BD524L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
interface ITask;
[
local,
object,
uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITask : IScheduledWorkItem
{
// Properties that correspond to parameters of CreateProcess:
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(
[out] LPWSTR * ppwszWorkingDirectory);
HRESULT SetPriority(
[in] DWORD dwPriority);
HRESULT GetPriority(
[out] DWORD * pdwPriority);
// Other properties:
HRESULT SetTaskFlags(
[in] DWORD dwFlags);
HRESULT GetTaskFlags(
[out] DWORD * pdwFlags);
HRESULT SetMaxRunTime(
[in] DWORD dwMaxRunTimeMS);
HRESULT GetMaxRunTime(
[out] DWORD * pdwMaxRunTimeMS);
}
//+----------------------------------------------------------------------------
//
// Interface: IEnumWorkItems
//
// Synopsis: Work item object enumerator. Enumerates the work item objects
// within the Tasks folder.
//
//-----------------------------------------------------------------------------
cpp_quote("// {148BD528-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(IID_IEnumWorkItems, 0x148BD528L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
interface IEnumWorkItems;
[
local,
object,
uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface IEnumWorkItems : IUnknown
{
// Methods:
HRESULT Next(
[in] ULONG celt,
[out] LPWSTR ** rgpwszNames,
[out] ULONG * pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset(
void);
HRESULT Clone(
[out] IEnumWorkItems ** ppEnumWorkItems);
}
//+----------------------------------------------------------------------------
//
// Interface: ITaskScheduler
//
// Synopsis: Task Scheduler interface. Provides location transparent
// manipulation of task and/or queue objects within the Tasks
// folder.
//
//-----------------------------------------------------------------------------
cpp_quote("// {148BD527-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(IID_ITaskScheduler, 0x148BD527L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
interface ITaskScheduler;
[
local,
object,
uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
pointer_default(unique)
]
interface ITaskScheduler : IUnknown
{
// Methods:
HRESULT SetTargetComputer(
[in] LPCWSTR pwszComputer);
HRESULT GetTargetComputer(
[out] LPWSTR * ppwszComputer);
HRESULT Enum(
[out] IEnumWorkItems ** ppEnumWorkItems);
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);
}
cpp_quote("EXTERN_C const CLSID CLSID_CTask;")
cpp_quote("EXTERN_C const CLSID CLSID_CTaskScheduler;")
cpp_quote(" ")
cpp_quote("// {148BD520-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(CLSID_CTask, 0x148BD520, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
cpp_quote(" ")
cpp_quote("// {148BD52A-A2AB-11CE-B11F-00AA00530503}")
cpp_quote("DEFINE_GUID(CLSID_CTaskScheduler, 0x148BD52A, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
cpp_quote(" ")
//
// NOTE: Definition of HPROPSHEETPAGE is from sdk\inc\prsht.h
// Including this header file causes numerous redefinition errors.
//
struct _PSP;
typedef struct _PSP * HPROPSHEETPAGE;
typedef enum _TASKPAGE {
TASKPAGE_TASK = 0,
TASKPAGE_SCHEDULE = 1,
TASKPAGE_SETTINGS = 2
} TASKPAGE;
//+----------------------------------------------------------------------------
//
// Interface: IProvideTaskPage
//
// Synopsis: Task property page retrieval interface. With this interface,
// it is possible to retrieve one or more property pages
// associated with a task object. Task objects inherit this
// interface.
//
//-----------------------------------------------------------------------------
cpp_quote("// {4086658a-cbbb-11cf-b604-00c04fd8d565}")
cpp_quote("DEFINE_GUID(IID_IProvideTaskPage, 0x4086658aL, 0xcbbb, 0x11cf, 0xb6, 0x04, 0x00, 0xc0, 0x4f, 0xd8, 0xd5, 0x65);")
interface IProvideTaskPage;
[
local,
object,
uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
pointer_default(unique)
]
interface IProvideTaskPage : IUnknown
{
// Methods:
HRESULT GetPage(
[in] TASKPAGE tpType,
[in] BOOL fPersistChanges,
[out] HPROPSHEETPAGE * phPage);
}
cpp_quote("#define ISchedulingAgent ITaskScheduler")
cpp_quote("#define IEnumTasks IEnumWorkItems")
cpp_quote("#define IID_ISchedulingAgent IID_ITaskScheduler")
cpp_quote("#define CLSID_CSchedulingAgent CLSID_CTaskScheduler")