/*** Autogenerated by WIDL 4.17 from ../../wine/include/mstask.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __mstask_h__
#define __mstask_h__

/* Forward declarations */

#ifndef __IEnumWorkItems_FWD_DEFINED__
#define __IEnumWorkItems_FWD_DEFINED__
typedef interface IEnumWorkItems IEnumWorkItems;
#ifdef __cplusplus
interface IEnumWorkItems;
#endif /* __cplusplus */
#endif

#ifndef __IProvideTaskPage_FWD_DEFINED__
#define __IProvideTaskPage_FWD_DEFINED__
typedef interface IProvideTaskPage IProvideTaskPage;
#ifdef __cplusplus
interface IProvideTaskPage;
#endif /* __cplusplus */
#endif

#ifndef __ITaskTrigger_FWD_DEFINED__
#define __ITaskTrigger_FWD_DEFINED__
typedef interface ITaskTrigger ITaskTrigger;
#ifdef __cplusplus
interface ITaskTrigger;
#endif /* __cplusplus */
#endif

#ifndef __IScheduledWorkItem_FWD_DEFINED__
#define __IScheduledWorkItem_FWD_DEFINED__
typedef interface IScheduledWorkItem IScheduledWorkItem;
#ifdef __cplusplus
interface IScheduledWorkItem;
#endif /* __cplusplus */
#endif

#ifndef __ITask_FWD_DEFINED__
#define __ITask_FWD_DEFINED__
typedef interface ITask ITask;
#ifdef __cplusplus
interface ITask;
#endif /* __cplusplus */
#endif

#ifndef __ITaskScheduler_FWD_DEFINED__
#define __ITaskScheduler_FWD_DEFINED__
typedef interface ITaskScheduler ITaskScheduler;
#ifdef __cplusplus
interface ITaskScheduler;
#endif /* __cplusplus */
#endif

#ifndef __CTaskScheduler_FWD_DEFINED__
#define __CTaskScheduler_FWD_DEFINED__
#ifdef __cplusplus
typedef class CTaskScheduler CTaskScheduler;
#else
typedef struct CTaskScheduler CTaskScheduler;
#endif /* defined __cplusplus */
#endif /* defined __CTaskScheduler_FWD_DEFINED__ */

#ifndef __CTask_FWD_DEFINED__
#define __CTask_FWD_DEFINED__
#ifdef __cplusplus
typedef class CTask CTask;
#else
typedef struct CTask CTask;
#endif /* defined __cplusplus */
#endif /* defined __CTask_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>
#include <oleidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#define TASK_SUNDAY 0x1
#define TASK_MONDAY 0x2
#define TASK_TUESDAY 0x4
#define TASK_WEDNESDAY 0x8
#define TASK_THURSDAY 0x10
#define TASK_FRIDAY 0x20
#define TASK_SATURDAY 0x40
#define TASK_FIRST_WEEK 1
#define TASK_SECOND_WEEK 2
#define TASK_THIRD_WEEK 3
#define TASK_FOURTH_WEEK 4
#define TASK_LAST_WEEK 5
#define TASK_JANUARY 0x1
#define TASK_FEBRUARY 0x2
#define TASK_MARCH 0x4
#define TASK_APRIL 0x8
#define TASK_MAY 0x10
#define TASK_JUNE 0x20
#define TASK_JULY 0x40
#define TASK_AUGUST 0x80
#define TASK_SEPTEMBER 0x100
#define TASK_OCTOBER 0x200
#define TASK_NOVEMBER 0x400
#define TASK_DECEMBER 0x800
#define TASK_FLAG_INTERACTIVE 0x0001
#define TASK_FLAG_DELETE_WHEN_DONE 0x0002
#define TASK_FLAG_DISABLED 0x0004
#define TASK_FLAG_START_ONLY_IF_IDLE 0x0010
#define TASK_FLAG_KILL_ON_IDLE_END 0x0020
#define TASK_FLAG_DONT_START_IF_ON_BATTERIES 0x0040
#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES 0x0080
#define TASK_FLAG_RUN_ONLY_IF_DOCKED 0x0100
#define TASK_FLAG_HIDDEN 0x0200
#define TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET 0x0400
#define TASK_FLAG_RESTART_ON_IDLE_RESUME 0x0800
#define TASK_FLAG_SYSTEM_REQUIRED 0x1000
#define TASK_FLAG_RUN_ONLY_IF_LOGGED_ON 0x2000
#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1
#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2
#define TASK_TRIGGER_FLAG_DISABLED 0x4
/*****************************************************************************
 * IEnumWorkItems interface
 */
#ifndef __IEnumWorkItems_INTERFACE_DEFINED__
#define __IEnumWorkItems_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumWorkItems, 0x148bd528, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("148bd528-a2ab-11ce-b11f-00aa00530503")
IEnumWorkItems : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        LPWSTR **rgpwszNames,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumWorkItems **ppEnumWorkItems) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumWorkItems, 0x148bd528, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#else
typedef struct IEnumWorkItemsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumWorkItems *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumWorkItems *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumWorkItems *This);

    /*** IEnumWorkItems methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumWorkItems *This,
        ULONG celt,
        LPWSTR **rgpwszNames,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumWorkItems *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumWorkItems *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumWorkItems *This,
        IEnumWorkItems **ppEnumWorkItems);

    END_INTERFACE
} IEnumWorkItemsVtbl;

interface IEnumWorkItems {
    CONST_VTBL IEnumWorkItemsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumWorkItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumWorkItems_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumWorkItems_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumWorkItems methods ***/
#define IEnumWorkItems_Next(This,celt,rgpwszNames,pceltFetched) (This)->lpVtbl->Next(This,celt,rgpwszNames,pceltFetched)
#define IEnumWorkItems_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumWorkItems_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumWorkItems_Clone(This,ppEnumWorkItems) (This)->lpVtbl->Clone(This,ppEnumWorkItems)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumWorkItems_QueryInterface(IEnumWorkItems* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumWorkItems_AddRef(IEnumWorkItems* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumWorkItems_Release(IEnumWorkItems* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumWorkItems methods ***/
static FORCEINLINE HRESULT IEnumWorkItems_Next(IEnumWorkItems* This,ULONG celt,LPWSTR **rgpwszNames,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgpwszNames,pceltFetched);
}
static FORCEINLINE HRESULT IEnumWorkItems_Skip(IEnumWorkItems* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumWorkItems_Reset(IEnumWorkItems* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumWorkItems_Clone(IEnumWorkItems* This,IEnumWorkItems **ppEnumWorkItems) {
    return This->lpVtbl->Clone(This,ppEnumWorkItems);
}
#endif
#endif

#endif


#endif  /* __IEnumWorkItems_INTERFACE_DEFINED__ */

#ifndef _HPROPSHEETPAGE_DEFINED
typedef struct _PSP *HPROPSHEETPAGE;
#define _HPROPSHEETPAGE_DEFINED
#endif
/*****************************************************************************
 * IProvideTaskPage interface
 */
#ifndef __IProvideTaskPage_INTERFACE_DEFINED__
#define __IProvideTaskPage_INTERFACE_DEFINED__

typedef enum _TASKPAGE {
    TASKPAGE_TASK = 0,
    TASKPAGE_SCHEDULE = 1,
    TASKPAGE_SETTINGS = 2
} TASKPAGE;
DEFINE_GUID(IID_IProvideTaskPage, 0x4086658a, 0xcbbb, 0x11cf, 0xb6,0x04, 0x00,0xc0,0x4f,0xd8,0xd5,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4086658a-cbbb-11cf-b604-00c04fd8d565")
IProvideTaskPage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPage(
        TASKPAGE tpType,
        BOOL fPersistChanges,
        HPROPSHEETPAGE *phPage) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IProvideTaskPage, 0x4086658a, 0xcbbb, 0x11cf, 0xb6,0x04, 0x00,0xc0,0x4f,0xd8,0xd5,0x65)
#endif
#else
typedef struct IProvideTaskPageVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IProvideTaskPage *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IProvideTaskPage *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IProvideTaskPage *This);

    /*** IProvideTaskPage methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPage)(
        IProvideTaskPage *This,
        TASKPAGE tpType,
        BOOL fPersistChanges,
        HPROPSHEETPAGE *phPage);

    END_INTERFACE
} IProvideTaskPageVtbl;

interface IProvideTaskPage {
    CONST_VTBL IProvideTaskPageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IProvideTaskPage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IProvideTaskPage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IProvideTaskPage_Release(This) (This)->lpVtbl->Release(This)
/*** IProvideTaskPage methods ***/
#define IProvideTaskPage_GetPage(This,tpType,fPersistChanges,phPage) (This)->lpVtbl->GetPage(This,tpType,fPersistChanges,phPage)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IProvideTaskPage_QueryInterface(IProvideTaskPage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IProvideTaskPage_AddRef(IProvideTaskPage* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IProvideTaskPage_Release(IProvideTaskPage* This) {
    return This->lpVtbl->Release(This);
}
/*** IProvideTaskPage methods ***/
static FORCEINLINE HRESULT IProvideTaskPage_GetPage(IProvideTaskPage* This,TASKPAGE tpType,BOOL fPersistChanges,HPROPSHEETPAGE *phPage) {
    return This->lpVtbl->GetPage(This,tpType,fPersistChanges,phPage);
}
#endif
#endif

#endif


#endif  /* __IProvideTaskPage_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITaskTrigger interface
 */
#ifndef __ITaskTrigger_INTERFACE_DEFINED__
#define __ITaskTrigger_INTERFACE_DEFINED__

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;
typedef enum _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;
typedef struct _TASK_TRIGGER *PTASK_TRIGGER;
DEFINE_GUID(IID_ITaskTrigger, 0x148bd52b, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("148bd52b-a2ab-11ce-b11f-00aa00530503")
ITaskTrigger : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetTrigger(
        const PTASK_TRIGGER pTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTrigger(
        PTASK_TRIGGER pTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTriggerString(
        LPWSTR *ppwszTrigger) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskTrigger, 0x148bd52b, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#else
typedef struct ITaskTriggerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITaskTrigger *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITaskTrigger *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITaskTrigger *This);

    /*** ITaskTrigger methods ***/
    HRESULT (STDMETHODCALLTYPE *SetTrigger)(
        ITaskTrigger *This,
        const PTASK_TRIGGER pTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTrigger)(
        ITaskTrigger *This,
        PTASK_TRIGGER pTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTriggerString)(
        ITaskTrigger *This,
        LPWSTR *ppwszTrigger);

    END_INTERFACE
} ITaskTriggerVtbl;

interface ITaskTrigger {
    CONST_VTBL ITaskTriggerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITaskTrigger_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskTrigger_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskTrigger_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskTrigger methods ***/
#define ITaskTrigger_SetTrigger(This,pTrigger) (This)->lpVtbl->SetTrigger(This,pTrigger)
#define ITaskTrigger_GetTrigger(This,pTrigger) (This)->lpVtbl->GetTrigger(This,pTrigger)
#define ITaskTrigger_GetTriggerString(This,ppwszTrigger) (This)->lpVtbl->GetTriggerString(This,ppwszTrigger)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskTrigger_QueryInterface(ITaskTrigger* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskTrigger_AddRef(ITaskTrigger* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskTrigger_Release(ITaskTrigger* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskTrigger methods ***/
static FORCEINLINE HRESULT ITaskTrigger_SetTrigger(ITaskTrigger* This,const PTASK_TRIGGER pTrigger) {
    return This->lpVtbl->SetTrigger(This,pTrigger);
}
static FORCEINLINE HRESULT ITaskTrigger_GetTrigger(ITaskTrigger* This,PTASK_TRIGGER pTrigger) {
    return This->lpVtbl->GetTrigger(This,pTrigger);
}
static FORCEINLINE HRESULT ITaskTrigger_GetTriggerString(ITaskTrigger* This,LPWSTR *ppwszTrigger) {
    return This->lpVtbl->GetTriggerString(This,ppwszTrigger);
}
#endif
#endif

#endif


#endif  /* __ITaskTrigger_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IScheduledWorkItem interface
 */
#ifndef __IScheduledWorkItem_INTERFACE_DEFINED__
#define __IScheduledWorkItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IScheduledWorkItem, 0xa6b952f0, 0xa4b1, 0x11d0, 0x99,0x7d, 0x00,0xaa,0x00,0x68,0x87,0xec);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a6b952f0-a4b1-11d0-997d-00aa006887ec")
IScheduledWorkItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateTrigger(
        WORD *piNewTrigger,
        ITaskTrigger **ppTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteTrigger(
        WORD iTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTriggerCount(
        WORD *plCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTrigger(
        WORD iTrigger,
        ITaskTrigger **ppTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTriggerString(
        WORD iTrigger,
        LPWSTR *ppwszTrigger) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRunTimes(
        const LPSYSTEMTIME pstBegin,
        const LPSYSTEMTIME pstEnd,
        WORD *pCount,
        LPSYSTEMTIME *rgstTaskTimes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextRunTime(
        SYSTEMTIME *pstNextRun) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIdleWait(
        WORD wIdleMinutes,
        WORD wDeadlineMinutes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIdleWait(
        WORD *pwIdleMinutes,
        WORD *pwDeadlineMinutes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Run(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Terminate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EditWorkItem(
        HWND hParent,
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMostRecentRunTime(
        SYSTEMTIME *pstLastRun) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        HRESULT *phrStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExitCode(
        DWORD *pdwExitCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetComment(
        LPCWSTR pwszComment) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetComment(
        LPWSTR *ppwszComment) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCreator(
        LPCWSTR pwszCreator) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCreator(
        LPWSTR *ppwszCreator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWorkItemData(
        WORD cBytes,
        BYTE rgbData[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWorkItemData(
        WORD *pcBytes,
        BYTE **ppBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetErrorRetryCount(
        WORD wRetryCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorRetryCount(
        WORD *pwRetryCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetErrorRetryInterval(
        WORD wRetryInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorRetryInterval(
        WORD *pwRetryInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAccountInformation(
        LPCWSTR pwszAccountName,
        LPCWSTR pwszPassword) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAccountInformation(
        LPWSTR *ppwszAccountName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IScheduledWorkItem, 0xa6b952f0, 0xa4b1, 0x11d0, 0x99,0x7d, 0x00,0xaa,0x00,0x68,0x87,0xec)
#endif
#else
typedef struct IScheduledWorkItemVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IScheduledWorkItem *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IScheduledWorkItem *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IScheduledWorkItem *This);

    /*** IScheduledWorkItem methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateTrigger)(
        IScheduledWorkItem *This,
        WORD *piNewTrigger,
        ITaskTrigger **ppTrigger);

    HRESULT (STDMETHODCALLTYPE *DeleteTrigger)(
        IScheduledWorkItem *This,
        WORD iTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTriggerCount)(
        IScheduledWorkItem *This,
        WORD *plCount);

    HRESULT (STDMETHODCALLTYPE *GetTrigger)(
        IScheduledWorkItem *This,
        WORD iTrigger,
        ITaskTrigger **ppTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTriggerString)(
        IScheduledWorkItem *This,
        WORD iTrigger,
        LPWSTR *ppwszTrigger);

    HRESULT (STDMETHODCALLTYPE *GetRunTimes)(
        IScheduledWorkItem *This,
        const LPSYSTEMTIME pstBegin,
        const LPSYSTEMTIME pstEnd,
        WORD *pCount,
        LPSYSTEMTIME *rgstTaskTimes);

    HRESULT (STDMETHODCALLTYPE *GetNextRunTime)(
        IScheduledWorkItem *This,
        SYSTEMTIME *pstNextRun);

    HRESULT (STDMETHODCALLTYPE *SetIdleWait)(
        IScheduledWorkItem *This,
        WORD wIdleMinutes,
        WORD wDeadlineMinutes);

    HRESULT (STDMETHODCALLTYPE *GetIdleWait)(
        IScheduledWorkItem *This,
        WORD *pwIdleMinutes,
        WORD *pwDeadlineMinutes);

    HRESULT (STDMETHODCALLTYPE *Run)(
        IScheduledWorkItem *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        IScheduledWorkItem *This);

    HRESULT (STDMETHODCALLTYPE *EditWorkItem)(
        IScheduledWorkItem *This,
        HWND hParent,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *GetMostRecentRunTime)(
        IScheduledWorkItem *This,
        SYSTEMTIME *pstLastRun);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IScheduledWorkItem *This,
        HRESULT *phrStatus);

    HRESULT (STDMETHODCALLTYPE *GetExitCode)(
        IScheduledWorkItem *This,
        DWORD *pdwExitCode);

    HRESULT (STDMETHODCALLTYPE *SetComment)(
        IScheduledWorkItem *This,
        LPCWSTR pwszComment);

    HRESULT (STDMETHODCALLTYPE *GetComment)(
        IScheduledWorkItem *This,
        LPWSTR *ppwszComment);

    HRESULT (STDMETHODCALLTYPE *SetCreator)(
        IScheduledWorkItem *This,
        LPCWSTR pwszCreator);

    HRESULT (STDMETHODCALLTYPE *GetCreator)(
        IScheduledWorkItem *This,
        LPWSTR *ppwszCreator);

    HRESULT (STDMETHODCALLTYPE *SetWorkItemData)(
        IScheduledWorkItem *This,
        WORD cBytes,
        BYTE rgbData[]);

    HRESULT (STDMETHODCALLTYPE *GetWorkItemData)(
        IScheduledWorkItem *This,
        WORD *pcBytes,
        BYTE **ppBytes);

    HRESULT (STDMETHODCALLTYPE *SetErrorRetryCount)(
        IScheduledWorkItem *This,
        WORD wRetryCount);

    HRESULT (STDMETHODCALLTYPE *GetErrorRetryCount)(
        IScheduledWorkItem *This,
        WORD *pwRetryCount);

    HRESULT (STDMETHODCALLTYPE *SetErrorRetryInterval)(
        IScheduledWorkItem *This,
        WORD wRetryInterval);

    HRESULT (STDMETHODCALLTYPE *GetErrorRetryInterval)(
        IScheduledWorkItem *This,
        WORD *pwRetryInterval);

    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IScheduledWorkItem *This,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        IScheduledWorkItem *This,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *SetAccountInformation)(
        IScheduledWorkItem *This,
        LPCWSTR pwszAccountName,
        LPCWSTR pwszPassword);

    HRESULT (STDMETHODCALLTYPE *GetAccountInformation)(
        IScheduledWorkItem *This,
        LPWSTR *ppwszAccountName);

    END_INTERFACE
} IScheduledWorkItemVtbl;

interface IScheduledWorkItem {
    CONST_VTBL IScheduledWorkItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IScheduledWorkItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IScheduledWorkItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IScheduledWorkItem_Release(This) (This)->lpVtbl->Release(This)
/*** IScheduledWorkItem methods ***/
#define IScheduledWorkItem_CreateTrigger(This,piNewTrigger,ppTrigger) (This)->lpVtbl->CreateTrigger(This,piNewTrigger,ppTrigger)
#define IScheduledWorkItem_DeleteTrigger(This,iTrigger) (This)->lpVtbl->DeleteTrigger(This,iTrigger)
#define IScheduledWorkItem_GetTriggerCount(This,plCount) (This)->lpVtbl->GetTriggerCount(This,plCount)
#define IScheduledWorkItem_GetTrigger(This,iTrigger,ppTrigger) (This)->lpVtbl->GetTrigger(This,iTrigger,ppTrigger)
#define IScheduledWorkItem_GetTriggerString(This,iTrigger,ppwszTrigger) (This)->lpVtbl->GetTriggerString(This,iTrigger,ppwszTrigger)
#define IScheduledWorkItem_GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes) (This)->lpVtbl->GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes)
#define IScheduledWorkItem_GetNextRunTime(This,pstNextRun) (This)->lpVtbl->GetNextRunTime(This,pstNextRun)
#define IScheduledWorkItem_SetIdleWait(This,wIdleMinutes,wDeadlineMinutes) (This)->lpVtbl->SetIdleWait(This,wIdleMinutes,wDeadlineMinutes)
#define IScheduledWorkItem_GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes) (This)->lpVtbl->GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes)
#define IScheduledWorkItem_Run(This) (This)->lpVtbl->Run(This)
#define IScheduledWorkItem_Terminate(This) (This)->lpVtbl->Terminate(This)
#define IScheduledWorkItem_EditWorkItem(This,hParent,dwReserved) (This)->lpVtbl->EditWorkItem(This,hParent,dwReserved)
#define IScheduledWorkItem_GetMostRecentRunTime(This,pstLastRun) (This)->lpVtbl->GetMostRecentRunTime(This,pstLastRun)
#define IScheduledWorkItem_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
#define IScheduledWorkItem_GetExitCode(This,pdwExitCode) (This)->lpVtbl->GetExitCode(This,pdwExitCode)
#define IScheduledWorkItem_SetComment(This,pwszComment) (This)->lpVtbl->SetComment(This,pwszComment)
#define IScheduledWorkItem_GetComment(This,ppwszComment) (This)->lpVtbl->GetComment(This,ppwszComment)
#define IScheduledWorkItem_SetCreator(This,pwszCreator) (This)->lpVtbl->SetCreator(This,pwszCreator)
#define IScheduledWorkItem_GetCreator(This,ppwszCreator) (This)->lpVtbl->GetCreator(This,ppwszCreator)
#define IScheduledWorkItem_SetWorkItemData(This,cBytes,rgbData) (This)->lpVtbl->SetWorkItemData(This,cBytes,rgbData)
#define IScheduledWorkItem_GetWorkItemData(This,pcBytes,ppBytes) (This)->lpVtbl->GetWorkItemData(This,pcBytes,ppBytes)
#define IScheduledWorkItem_SetErrorRetryCount(This,wRetryCount) (This)->lpVtbl->SetErrorRetryCount(This,wRetryCount)
#define IScheduledWorkItem_GetErrorRetryCount(This,pwRetryCount) (This)->lpVtbl->GetErrorRetryCount(This,pwRetryCount)
#define IScheduledWorkItem_SetErrorRetryInterval(This,wRetryInterval) (This)->lpVtbl->SetErrorRetryInterval(This,wRetryInterval)
#define IScheduledWorkItem_GetErrorRetryInterval(This,pwRetryInterval) (This)->lpVtbl->GetErrorRetryInterval(This,pwRetryInterval)
#define IScheduledWorkItem_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
#define IScheduledWorkItem_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
#define IScheduledWorkItem_SetAccountInformation(This,pwszAccountName,pwszPassword) (This)->lpVtbl->SetAccountInformation(This,pwszAccountName,pwszPassword)
#define IScheduledWorkItem_GetAccountInformation(This,ppwszAccountName) (This)->lpVtbl->GetAccountInformation(This,ppwszAccountName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IScheduledWorkItem_QueryInterface(IScheduledWorkItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IScheduledWorkItem_AddRef(IScheduledWorkItem* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IScheduledWorkItem_Release(IScheduledWorkItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IScheduledWorkItem methods ***/
static FORCEINLINE HRESULT IScheduledWorkItem_CreateTrigger(IScheduledWorkItem* This,WORD *piNewTrigger,ITaskTrigger **ppTrigger) {
    return This->lpVtbl->CreateTrigger(This,piNewTrigger,ppTrigger);
}
static FORCEINLINE HRESULT IScheduledWorkItem_DeleteTrigger(IScheduledWorkItem* This,WORD iTrigger) {
    return This->lpVtbl->DeleteTrigger(This,iTrigger);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetTriggerCount(IScheduledWorkItem* This,WORD *plCount) {
    return This->lpVtbl->GetTriggerCount(This,plCount);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetTrigger(IScheduledWorkItem* This,WORD iTrigger,ITaskTrigger **ppTrigger) {
    return This->lpVtbl->GetTrigger(This,iTrigger,ppTrigger);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetTriggerString(IScheduledWorkItem* This,WORD iTrigger,LPWSTR *ppwszTrigger) {
    return This->lpVtbl->GetTriggerString(This,iTrigger,ppwszTrigger);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetRunTimes(IScheduledWorkItem* This,const LPSYSTEMTIME pstBegin,const LPSYSTEMTIME pstEnd,WORD *pCount,LPSYSTEMTIME *rgstTaskTimes) {
    return This->lpVtbl->GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetNextRunTime(IScheduledWorkItem* This,SYSTEMTIME *pstNextRun) {
    return This->lpVtbl->GetNextRunTime(This,pstNextRun);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetIdleWait(IScheduledWorkItem* This,WORD wIdleMinutes,WORD wDeadlineMinutes) {
    return This->lpVtbl->SetIdleWait(This,wIdleMinutes,wDeadlineMinutes);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetIdleWait(IScheduledWorkItem* This,WORD *pwIdleMinutes,WORD *pwDeadlineMinutes) {
    return This->lpVtbl->GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes);
}
static FORCEINLINE HRESULT IScheduledWorkItem_Run(IScheduledWorkItem* This) {
    return This->lpVtbl->Run(This);
}
static FORCEINLINE HRESULT IScheduledWorkItem_Terminate(IScheduledWorkItem* This) {
    return This->lpVtbl->Terminate(This);
}
static FORCEINLINE HRESULT IScheduledWorkItem_EditWorkItem(IScheduledWorkItem* This,HWND hParent,DWORD dwReserved) {
    return This->lpVtbl->EditWorkItem(This,hParent,dwReserved);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetMostRecentRunTime(IScheduledWorkItem* This,SYSTEMTIME *pstLastRun) {
    return This->lpVtbl->GetMostRecentRunTime(This,pstLastRun);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetStatus(IScheduledWorkItem* This,HRESULT *phrStatus) {
    return This->lpVtbl->GetStatus(This,phrStatus);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetExitCode(IScheduledWorkItem* This,DWORD *pdwExitCode) {
    return This->lpVtbl->GetExitCode(This,pdwExitCode);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetComment(IScheduledWorkItem* This,LPCWSTR pwszComment) {
    return This->lpVtbl->SetComment(This,pwszComment);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetComment(IScheduledWorkItem* This,LPWSTR *ppwszComment) {
    return This->lpVtbl->GetComment(This,ppwszComment);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetCreator(IScheduledWorkItem* This,LPCWSTR pwszCreator) {
    return This->lpVtbl->SetCreator(This,pwszCreator);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetCreator(IScheduledWorkItem* This,LPWSTR *ppwszCreator) {
    return This->lpVtbl->GetCreator(This,ppwszCreator);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetWorkItemData(IScheduledWorkItem* This,WORD cBytes,BYTE rgbData[]) {
    return This->lpVtbl->SetWorkItemData(This,cBytes,rgbData);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetWorkItemData(IScheduledWorkItem* This,WORD *pcBytes,BYTE **ppBytes) {
    return This->lpVtbl->GetWorkItemData(This,pcBytes,ppBytes);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetErrorRetryCount(IScheduledWorkItem* This,WORD wRetryCount) {
    return This->lpVtbl->SetErrorRetryCount(This,wRetryCount);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetErrorRetryCount(IScheduledWorkItem* This,WORD *pwRetryCount) {
    return This->lpVtbl->GetErrorRetryCount(This,pwRetryCount);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetErrorRetryInterval(IScheduledWorkItem* This,WORD wRetryInterval) {
    return This->lpVtbl->SetErrorRetryInterval(This,wRetryInterval);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetErrorRetryInterval(IScheduledWorkItem* This,WORD *pwRetryInterval) {
    return This->lpVtbl->GetErrorRetryInterval(This,pwRetryInterval);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetFlags(IScheduledWorkItem* This,DWORD dwFlags) {
    return This->lpVtbl->SetFlags(This,dwFlags);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetFlags(IScheduledWorkItem* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetFlags(This,pdwFlags);
}
static FORCEINLINE HRESULT IScheduledWorkItem_SetAccountInformation(IScheduledWorkItem* This,LPCWSTR pwszAccountName,LPCWSTR pwszPassword) {
    return This->lpVtbl->SetAccountInformation(This,pwszAccountName,pwszPassword);
}
static FORCEINLINE HRESULT IScheduledWorkItem_GetAccountInformation(IScheduledWorkItem* This,LPWSTR *ppwszAccountName) {
    return This->lpVtbl->GetAccountInformation(This,ppwszAccountName);
}
#endif
#endif

#endif


#endif  /* __IScheduledWorkItem_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITask interface
 */
#ifndef __ITask_INTERFACE_DEFINED__
#define __ITask_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITask, 0x148bd524, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("148bd524-a2ab-11ce-b11f-00aa00530503")
ITask : public IScheduledWorkItem
{
    virtual HRESULT STDMETHODCALLTYPE SetApplicationName(
        LPCWSTR pwszApplicationName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetApplicationName(
        LPWSTR *ppwszApplicationName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetParameters(
        LPCWSTR pwszParameters) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParameters(
        LPWSTR *ppwszParameters) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(
        LPCWSTR pwszWorkingDirectory) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(
        LPWSTR *ppwszWorkingDirectory) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPriority(
        DWORD dwPriority) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPriority(
        DWORD *pdwPriority) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTaskFlags(
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTaskFlags(
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMaxRunTime(
        DWORD dwMaxRunTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxRunTime(
        DWORD *pdwMaxRunTime) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITask, 0x148bd524, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#else
typedef struct ITaskVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITask *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITask *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITask *This);

    /*** IScheduledWorkItem methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateTrigger)(
        ITask *This,
        WORD *piNewTrigger,
        ITaskTrigger **ppTrigger);

    HRESULT (STDMETHODCALLTYPE *DeleteTrigger)(
        ITask *This,
        WORD iTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTriggerCount)(
        ITask *This,
        WORD *plCount);

    HRESULT (STDMETHODCALLTYPE *GetTrigger)(
        ITask *This,
        WORD iTrigger,
        ITaskTrigger **ppTrigger);

    HRESULT (STDMETHODCALLTYPE *GetTriggerString)(
        ITask *This,
        WORD iTrigger,
        LPWSTR *ppwszTrigger);

    HRESULT (STDMETHODCALLTYPE *GetRunTimes)(
        ITask *This,
        const LPSYSTEMTIME pstBegin,
        const LPSYSTEMTIME pstEnd,
        WORD *pCount,
        LPSYSTEMTIME *rgstTaskTimes);

    HRESULT (STDMETHODCALLTYPE *GetNextRunTime)(
        ITask *This,
        SYSTEMTIME *pstNextRun);

    HRESULT (STDMETHODCALLTYPE *SetIdleWait)(
        ITask *This,
        WORD wIdleMinutes,
        WORD wDeadlineMinutes);

    HRESULT (STDMETHODCALLTYPE *GetIdleWait)(
        ITask *This,
        WORD *pwIdleMinutes,
        WORD *pwDeadlineMinutes);

    HRESULT (STDMETHODCALLTYPE *Run)(
        ITask *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        ITask *This);

    HRESULT (STDMETHODCALLTYPE *EditWorkItem)(
        ITask *This,
        HWND hParent,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *GetMostRecentRunTime)(
        ITask *This,
        SYSTEMTIME *pstLastRun);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        ITask *This,
        HRESULT *phrStatus);

    HRESULT (STDMETHODCALLTYPE *GetExitCode)(
        ITask *This,
        DWORD *pdwExitCode);

    HRESULT (STDMETHODCALLTYPE *SetComment)(
        ITask *This,
        LPCWSTR pwszComment);

    HRESULT (STDMETHODCALLTYPE *GetComment)(
        ITask *This,
        LPWSTR *ppwszComment);

    HRESULT (STDMETHODCALLTYPE *SetCreator)(
        ITask *This,
        LPCWSTR pwszCreator);

    HRESULT (STDMETHODCALLTYPE *GetCreator)(
        ITask *This,
        LPWSTR *ppwszCreator);

    HRESULT (STDMETHODCALLTYPE *SetWorkItemData)(
        ITask *This,
        WORD cBytes,
        BYTE rgbData[]);

    HRESULT (STDMETHODCALLTYPE *GetWorkItemData)(
        ITask *This,
        WORD *pcBytes,
        BYTE **ppBytes);

    HRESULT (STDMETHODCALLTYPE *SetErrorRetryCount)(
        ITask *This,
        WORD wRetryCount);

    HRESULT (STDMETHODCALLTYPE *GetErrorRetryCount)(
        ITask *This,
        WORD *pwRetryCount);

    HRESULT (STDMETHODCALLTYPE *SetErrorRetryInterval)(
        ITask *This,
        WORD wRetryInterval);

    HRESULT (STDMETHODCALLTYPE *GetErrorRetryInterval)(
        ITask *This,
        WORD *pwRetryInterval);

    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        ITask *This,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        ITask *This,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *SetAccountInformation)(
        ITask *This,
        LPCWSTR pwszAccountName,
        LPCWSTR pwszPassword);

    HRESULT (STDMETHODCALLTYPE *GetAccountInformation)(
        ITask *This,
        LPWSTR *ppwszAccountName);

    /*** ITask methods ***/
    HRESULT (STDMETHODCALLTYPE *SetApplicationName)(
        ITask *This,
        LPCWSTR pwszApplicationName);

    HRESULT (STDMETHODCALLTYPE *GetApplicationName)(
        ITask *This,
        LPWSTR *ppwszApplicationName);

    HRESULT (STDMETHODCALLTYPE *SetParameters)(
        ITask *This,
        LPCWSTR pwszParameters);

    HRESULT (STDMETHODCALLTYPE *GetParameters)(
        ITask *This,
        LPWSTR *ppwszParameters);

    HRESULT (STDMETHODCALLTYPE *SetWorkingDirectory)(
        ITask *This,
        LPCWSTR pwszWorkingDirectory);

    HRESULT (STDMETHODCALLTYPE *GetWorkingDirectory)(
        ITask *This,
        LPWSTR *ppwszWorkingDirectory);

    HRESULT (STDMETHODCALLTYPE *SetPriority)(
        ITask *This,
        DWORD dwPriority);

    HRESULT (STDMETHODCALLTYPE *GetPriority)(
        ITask *This,
        DWORD *pdwPriority);

    HRESULT (STDMETHODCALLTYPE *SetTaskFlags)(
        ITask *This,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetTaskFlags)(
        ITask *This,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *SetMaxRunTime)(
        ITask *This,
        DWORD dwMaxRunTime);

    HRESULT (STDMETHODCALLTYPE *GetMaxRunTime)(
        ITask *This,
        DWORD *pdwMaxRunTime);

    END_INTERFACE
} ITaskVtbl;

interface ITask {
    CONST_VTBL ITaskVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITask_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITask_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITask_Release(This) (This)->lpVtbl->Release(This)
/*** IScheduledWorkItem methods ***/
#define ITask_CreateTrigger(This,piNewTrigger,ppTrigger) (This)->lpVtbl->CreateTrigger(This,piNewTrigger,ppTrigger)
#define ITask_DeleteTrigger(This,iTrigger) (This)->lpVtbl->DeleteTrigger(This,iTrigger)
#define ITask_GetTriggerCount(This,plCount) (This)->lpVtbl->GetTriggerCount(This,plCount)
#define ITask_GetTrigger(This,iTrigger,ppTrigger) (This)->lpVtbl->GetTrigger(This,iTrigger,ppTrigger)
#define ITask_GetTriggerString(This,iTrigger,ppwszTrigger) (This)->lpVtbl->GetTriggerString(This,iTrigger,ppwszTrigger)
#define ITask_GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes) (This)->lpVtbl->GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes)
#define ITask_GetNextRunTime(This,pstNextRun) (This)->lpVtbl->GetNextRunTime(This,pstNextRun)
#define ITask_SetIdleWait(This,wIdleMinutes,wDeadlineMinutes) (This)->lpVtbl->SetIdleWait(This,wIdleMinutes,wDeadlineMinutes)
#define ITask_GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes) (This)->lpVtbl->GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes)
#define ITask_Run(This) (This)->lpVtbl->Run(This)
#define ITask_Terminate(This) (This)->lpVtbl->Terminate(This)
#define ITask_EditWorkItem(This,hParent,dwReserved) (This)->lpVtbl->EditWorkItem(This,hParent,dwReserved)
#define ITask_GetMostRecentRunTime(This,pstLastRun) (This)->lpVtbl->GetMostRecentRunTime(This,pstLastRun)
#define ITask_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
#define ITask_GetExitCode(This,pdwExitCode) (This)->lpVtbl->GetExitCode(This,pdwExitCode)
#define ITask_SetComment(This,pwszComment) (This)->lpVtbl->SetComment(This,pwszComment)
#define ITask_GetComment(This,ppwszComment) (This)->lpVtbl->GetComment(This,ppwszComment)
#define ITask_SetCreator(This,pwszCreator) (This)->lpVtbl->SetCreator(This,pwszCreator)
#define ITask_GetCreator(This,ppwszCreator) (This)->lpVtbl->GetCreator(This,ppwszCreator)
#define ITask_SetWorkItemData(This,cBytes,rgbData) (This)->lpVtbl->SetWorkItemData(This,cBytes,rgbData)
#define ITask_GetWorkItemData(This,pcBytes,ppBytes) (This)->lpVtbl->GetWorkItemData(This,pcBytes,ppBytes)
#define ITask_SetErrorRetryCount(This,wRetryCount) (This)->lpVtbl->SetErrorRetryCount(This,wRetryCount)
#define ITask_GetErrorRetryCount(This,pwRetryCount) (This)->lpVtbl->GetErrorRetryCount(This,pwRetryCount)
#define ITask_SetErrorRetryInterval(This,wRetryInterval) (This)->lpVtbl->SetErrorRetryInterval(This,wRetryInterval)
#define ITask_GetErrorRetryInterval(This,pwRetryInterval) (This)->lpVtbl->GetErrorRetryInterval(This,pwRetryInterval)
#define ITask_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
#define ITask_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
#define ITask_SetAccountInformation(This,pwszAccountName,pwszPassword) (This)->lpVtbl->SetAccountInformation(This,pwszAccountName,pwszPassword)
#define ITask_GetAccountInformation(This,ppwszAccountName) (This)->lpVtbl->GetAccountInformation(This,ppwszAccountName)
/*** ITask methods ***/
#define ITask_SetApplicationName(This,pwszApplicationName) (This)->lpVtbl->SetApplicationName(This,pwszApplicationName)
#define ITask_GetApplicationName(This,ppwszApplicationName) (This)->lpVtbl->GetApplicationName(This,ppwszApplicationName)
#define ITask_SetParameters(This,pwszParameters) (This)->lpVtbl->SetParameters(This,pwszParameters)
#define ITask_GetParameters(This,ppwszParameters) (This)->lpVtbl->GetParameters(This,ppwszParameters)
#define ITask_SetWorkingDirectory(This,pwszWorkingDirectory) (This)->lpVtbl->SetWorkingDirectory(This,pwszWorkingDirectory)
#define ITask_GetWorkingDirectory(This,ppwszWorkingDirectory) (This)->lpVtbl->GetWorkingDirectory(This,ppwszWorkingDirectory)
#define ITask_SetPriority(This,dwPriority) (This)->lpVtbl->SetPriority(This,dwPriority)
#define ITask_GetPriority(This,pdwPriority) (This)->lpVtbl->GetPriority(This,pdwPriority)
#define ITask_SetTaskFlags(This,dwFlags) (This)->lpVtbl->SetTaskFlags(This,dwFlags)
#define ITask_GetTaskFlags(This,pdwFlags) (This)->lpVtbl->GetTaskFlags(This,pdwFlags)
#define ITask_SetMaxRunTime(This,dwMaxRunTime) (This)->lpVtbl->SetMaxRunTime(This,dwMaxRunTime)
#define ITask_GetMaxRunTime(This,pdwMaxRunTime) (This)->lpVtbl->GetMaxRunTime(This,pdwMaxRunTime)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITask_QueryInterface(ITask* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITask_AddRef(ITask* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITask_Release(ITask* This) {
    return This->lpVtbl->Release(This);
}
/*** IScheduledWorkItem methods ***/
static FORCEINLINE HRESULT ITask_CreateTrigger(ITask* This,WORD *piNewTrigger,ITaskTrigger **ppTrigger) {
    return This->lpVtbl->CreateTrigger(This,piNewTrigger,ppTrigger);
}
static FORCEINLINE HRESULT ITask_DeleteTrigger(ITask* This,WORD iTrigger) {
    return This->lpVtbl->DeleteTrigger(This,iTrigger);
}
static FORCEINLINE HRESULT ITask_GetTriggerCount(ITask* This,WORD *plCount) {
    return This->lpVtbl->GetTriggerCount(This,plCount);
}
static FORCEINLINE HRESULT ITask_GetTrigger(ITask* This,WORD iTrigger,ITaskTrigger **ppTrigger) {
    return This->lpVtbl->GetTrigger(This,iTrigger,ppTrigger);
}
static FORCEINLINE HRESULT ITask_GetTriggerString(ITask* This,WORD iTrigger,LPWSTR *ppwszTrigger) {
    return This->lpVtbl->GetTriggerString(This,iTrigger,ppwszTrigger);
}
static FORCEINLINE HRESULT ITask_GetRunTimes(ITask* This,const LPSYSTEMTIME pstBegin,const LPSYSTEMTIME pstEnd,WORD *pCount,LPSYSTEMTIME *rgstTaskTimes) {
    return This->lpVtbl->GetRunTimes(This,pstBegin,pstEnd,pCount,rgstTaskTimes);
}
static FORCEINLINE HRESULT ITask_GetNextRunTime(ITask* This,SYSTEMTIME *pstNextRun) {
    return This->lpVtbl->GetNextRunTime(This,pstNextRun);
}
static FORCEINLINE HRESULT ITask_SetIdleWait(ITask* This,WORD wIdleMinutes,WORD wDeadlineMinutes) {
    return This->lpVtbl->SetIdleWait(This,wIdleMinutes,wDeadlineMinutes);
}
static FORCEINLINE HRESULT ITask_GetIdleWait(ITask* This,WORD *pwIdleMinutes,WORD *pwDeadlineMinutes) {
    return This->lpVtbl->GetIdleWait(This,pwIdleMinutes,pwDeadlineMinutes);
}
static FORCEINLINE HRESULT ITask_Run(ITask* This) {
    return This->lpVtbl->Run(This);
}
static FORCEINLINE HRESULT ITask_Terminate(ITask* This) {
    return This->lpVtbl->Terminate(This);
}
static FORCEINLINE HRESULT ITask_EditWorkItem(ITask* This,HWND hParent,DWORD dwReserved) {
    return This->lpVtbl->EditWorkItem(This,hParent,dwReserved);
}
static FORCEINLINE HRESULT ITask_GetMostRecentRunTime(ITask* This,SYSTEMTIME *pstLastRun) {
    return This->lpVtbl->GetMostRecentRunTime(This,pstLastRun);
}
static FORCEINLINE HRESULT ITask_GetStatus(ITask* This,HRESULT *phrStatus) {
    return This->lpVtbl->GetStatus(This,phrStatus);
}
static FORCEINLINE HRESULT ITask_GetExitCode(ITask* This,DWORD *pdwExitCode) {
    return This->lpVtbl->GetExitCode(This,pdwExitCode);
}
static FORCEINLINE HRESULT ITask_SetComment(ITask* This,LPCWSTR pwszComment) {
    return This->lpVtbl->SetComment(This,pwszComment);
}
static FORCEINLINE HRESULT ITask_GetComment(ITask* This,LPWSTR *ppwszComment) {
    return This->lpVtbl->GetComment(This,ppwszComment);
}
static FORCEINLINE HRESULT ITask_SetCreator(ITask* This,LPCWSTR pwszCreator) {
    return This->lpVtbl->SetCreator(This,pwszCreator);
}
static FORCEINLINE HRESULT ITask_GetCreator(ITask* This,LPWSTR *ppwszCreator) {
    return This->lpVtbl->GetCreator(This,ppwszCreator);
}
static FORCEINLINE HRESULT ITask_SetWorkItemData(ITask* This,WORD cBytes,BYTE rgbData[]) {
    return This->lpVtbl->SetWorkItemData(This,cBytes,rgbData);
}
static FORCEINLINE HRESULT ITask_GetWorkItemData(ITask* This,WORD *pcBytes,BYTE **ppBytes) {
    return This->lpVtbl->GetWorkItemData(This,pcBytes,ppBytes);
}
static FORCEINLINE HRESULT ITask_SetErrorRetryCount(ITask* This,WORD wRetryCount) {
    return This->lpVtbl->SetErrorRetryCount(This,wRetryCount);
}
static FORCEINLINE HRESULT ITask_GetErrorRetryCount(ITask* This,WORD *pwRetryCount) {
    return This->lpVtbl->GetErrorRetryCount(This,pwRetryCount);
}
static FORCEINLINE HRESULT ITask_SetErrorRetryInterval(ITask* This,WORD wRetryInterval) {
    return This->lpVtbl->SetErrorRetryInterval(This,wRetryInterval);
}
static FORCEINLINE HRESULT ITask_GetErrorRetryInterval(ITask* This,WORD *pwRetryInterval) {
    return This->lpVtbl->GetErrorRetryInterval(This,pwRetryInterval);
}
static FORCEINLINE HRESULT ITask_SetFlags(ITask* This,DWORD dwFlags) {
    return This->lpVtbl->SetFlags(This,dwFlags);
}
static FORCEINLINE HRESULT ITask_GetFlags(ITask* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetFlags(This,pdwFlags);
}
static FORCEINLINE HRESULT ITask_SetAccountInformation(ITask* This,LPCWSTR pwszAccountName,LPCWSTR pwszPassword) {
    return This->lpVtbl->SetAccountInformation(This,pwszAccountName,pwszPassword);
}
static FORCEINLINE HRESULT ITask_GetAccountInformation(ITask* This,LPWSTR *ppwszAccountName) {
    return This->lpVtbl->GetAccountInformation(This,ppwszAccountName);
}
/*** ITask methods ***/
static FORCEINLINE HRESULT ITask_SetApplicationName(ITask* This,LPCWSTR pwszApplicationName) {
    return This->lpVtbl->SetApplicationName(This,pwszApplicationName);
}
static FORCEINLINE HRESULT ITask_GetApplicationName(ITask* This,LPWSTR *ppwszApplicationName) {
    return This->lpVtbl->GetApplicationName(This,ppwszApplicationName);
}
static FORCEINLINE HRESULT ITask_SetParameters(ITask* This,LPCWSTR pwszParameters) {
    return This->lpVtbl->SetParameters(This,pwszParameters);
}
static FORCEINLINE HRESULT ITask_GetParameters(ITask* This,LPWSTR *ppwszParameters) {
    return This->lpVtbl->GetParameters(This,ppwszParameters);
}
static FORCEINLINE HRESULT ITask_SetWorkingDirectory(ITask* This,LPCWSTR pwszWorkingDirectory) {
    return This->lpVtbl->SetWorkingDirectory(This,pwszWorkingDirectory);
}
static FORCEINLINE HRESULT ITask_GetWorkingDirectory(ITask* This,LPWSTR *ppwszWorkingDirectory) {
    return This->lpVtbl->GetWorkingDirectory(This,ppwszWorkingDirectory);
}
static FORCEINLINE HRESULT ITask_SetPriority(ITask* This,DWORD dwPriority) {
    return This->lpVtbl->SetPriority(This,dwPriority);
}
static FORCEINLINE HRESULT ITask_GetPriority(ITask* This,DWORD *pdwPriority) {
    return This->lpVtbl->GetPriority(This,pdwPriority);
}
static FORCEINLINE HRESULT ITask_SetTaskFlags(ITask* This,DWORD dwFlags) {
    return This->lpVtbl->SetTaskFlags(This,dwFlags);
}
static FORCEINLINE HRESULT ITask_GetTaskFlags(ITask* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetTaskFlags(This,pdwFlags);
}
static FORCEINLINE HRESULT ITask_SetMaxRunTime(ITask* This,DWORD dwMaxRunTime) {
    return This->lpVtbl->SetMaxRunTime(This,dwMaxRunTime);
}
static FORCEINLINE HRESULT ITask_GetMaxRunTime(ITask* This,DWORD *pdwMaxRunTime) {
    return This->lpVtbl->GetMaxRunTime(This,pdwMaxRunTime);
}
#endif
#endif

#endif


#endif  /* __ITask_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITaskScheduler interface
 */
#ifndef __ITaskScheduler_INTERFACE_DEFINED__
#define __ITaskScheduler_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITaskScheduler, 0x148bd527, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("148bd527-a2ab-11ce-b11f-00aa00530503")
ITaskScheduler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetTargetComputer(
        LPCWSTR pwszComputer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTargetComputer(
        LPWSTR *ppwszComputer) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enum(
        IEnumWorkItems **ppEnumTasks) = 0;

    virtual HRESULT STDMETHODCALLTYPE Activate(
        LPCWSTR pwszName,
        REFIID riid,
        IUnknown **ppunk) = 0;

    virtual HRESULT STDMETHODCALLTYPE Delete(
        LPCWSTR pwszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewWorkItem(
        LPCWSTR pwszTaskName,
        REFCLSID rclsid,
        REFIID riid,
        IUnknown **ppunk) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddWorkItem(
        LPCWSTR pwszTaskName,
        IScheduledWorkItem *pWorkItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsOfType(
        LPCWSTR pwszName,
        REFIID riid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskScheduler, 0x148bd527, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#else
typedef struct ITaskSchedulerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITaskScheduler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITaskScheduler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITaskScheduler *This);

    /*** ITaskScheduler methods ***/
    HRESULT (STDMETHODCALLTYPE *SetTargetComputer)(
        ITaskScheduler *This,
        LPCWSTR pwszComputer);

    HRESULT (STDMETHODCALLTYPE *GetTargetComputer)(
        ITaskScheduler *This,
        LPWSTR *ppwszComputer);

    HRESULT (STDMETHODCALLTYPE *Enum)(
        ITaskScheduler *This,
        IEnumWorkItems **ppEnumTasks);

    HRESULT (STDMETHODCALLTYPE *Activate)(
        ITaskScheduler *This,
        LPCWSTR pwszName,
        REFIID riid,
        IUnknown **ppunk);

    HRESULT (STDMETHODCALLTYPE *Delete)(
        ITaskScheduler *This,
        LPCWSTR pwszName);

    HRESULT (STDMETHODCALLTYPE *NewWorkItem)(
        ITaskScheduler *This,
        LPCWSTR pwszTaskName,
        REFCLSID rclsid,
        REFIID riid,
        IUnknown **ppunk);

    HRESULT (STDMETHODCALLTYPE *AddWorkItem)(
        ITaskScheduler *This,
        LPCWSTR pwszTaskName,
        IScheduledWorkItem *pWorkItem);

    HRESULT (STDMETHODCALLTYPE *IsOfType)(
        ITaskScheduler *This,
        LPCWSTR pwszName,
        REFIID riid);

    END_INTERFACE
} ITaskSchedulerVtbl;

interface ITaskScheduler {
    CONST_VTBL ITaskSchedulerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITaskScheduler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskScheduler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskScheduler_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskScheduler methods ***/
#define ITaskScheduler_SetTargetComputer(This,pwszComputer) (This)->lpVtbl->SetTargetComputer(This,pwszComputer)
#define ITaskScheduler_GetTargetComputer(This,ppwszComputer) (This)->lpVtbl->GetTargetComputer(This,ppwszComputer)
#define ITaskScheduler_Enum(This,ppEnumTasks) (This)->lpVtbl->Enum(This,ppEnumTasks)
#define ITaskScheduler_Activate(This,pwszName,riid,ppunk) (This)->lpVtbl->Activate(This,pwszName,riid,ppunk)
#define ITaskScheduler_Delete(This,pwszName) (This)->lpVtbl->Delete(This,pwszName)
#define ITaskScheduler_NewWorkItem(This,pwszTaskName,rclsid,riid,ppunk) (This)->lpVtbl->NewWorkItem(This,pwszTaskName,rclsid,riid,ppunk)
#define ITaskScheduler_AddWorkItem(This,pwszTaskName,pWorkItem) (This)->lpVtbl->AddWorkItem(This,pwszTaskName,pWorkItem)
#define ITaskScheduler_IsOfType(This,pwszName,riid) (This)->lpVtbl->IsOfType(This,pwszName,riid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskScheduler_QueryInterface(ITaskScheduler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskScheduler_AddRef(ITaskScheduler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskScheduler_Release(ITaskScheduler* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskScheduler methods ***/
static FORCEINLINE HRESULT ITaskScheduler_SetTargetComputer(ITaskScheduler* This,LPCWSTR pwszComputer) {
    return This->lpVtbl->SetTargetComputer(This,pwszComputer);
}
static FORCEINLINE HRESULT ITaskScheduler_GetTargetComputer(ITaskScheduler* This,LPWSTR *ppwszComputer) {
    return This->lpVtbl->GetTargetComputer(This,ppwszComputer);
}
static FORCEINLINE HRESULT ITaskScheduler_Enum(ITaskScheduler* This,IEnumWorkItems **ppEnumTasks) {
    return This->lpVtbl->Enum(This,ppEnumTasks);
}
static FORCEINLINE HRESULT ITaskScheduler_Activate(ITaskScheduler* This,LPCWSTR pwszName,REFIID riid,IUnknown **ppunk) {
    return This->lpVtbl->Activate(This,pwszName,riid,ppunk);
}
static FORCEINLINE HRESULT ITaskScheduler_Delete(ITaskScheduler* This,LPCWSTR pwszName) {
    return This->lpVtbl->Delete(This,pwszName);
}
static FORCEINLINE HRESULT ITaskScheduler_NewWorkItem(ITaskScheduler* This,LPCWSTR pwszTaskName,REFCLSID rclsid,REFIID riid,IUnknown **ppunk) {
    return This->lpVtbl->NewWorkItem(This,pwszTaskName,rclsid,riid,ppunk);
}
static FORCEINLINE HRESULT ITaskScheduler_AddWorkItem(ITaskScheduler* This,LPCWSTR pwszTaskName,IScheduledWorkItem *pWorkItem) {
    return This->lpVtbl->AddWorkItem(This,pwszTaskName,pWorkItem);
}
static FORCEINLINE HRESULT ITaskScheduler_IsOfType(ITaskScheduler* This,LPCWSTR pwszName,REFIID riid) {
    return This->lpVtbl->IsOfType(This,pwszName,riid);
}
#endif
#endif

#endif


#endif  /* __ITaskScheduler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CTaskScheduler coclass
 */

DEFINE_GUID(CLSID_CTaskScheduler, 0x148bd52a, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);

#ifdef __cplusplus
class DECLSPEC_UUID("148bd52a-a2ab-11ce-b11f-00aa00530503") CTaskScheduler;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CTaskScheduler, 0x148bd52a, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#endif

/*****************************************************************************
 * CTask coclass
 */

DEFINE_GUID(CLSID_CTask, 0x148bd520, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);

#ifdef __cplusplus
class DECLSPEC_UUID("148bd520-a2ab-11ce-b11f-00aa00530503") CTask;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CTask, 0x148bd520, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03)
#endif
#endif

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __mstask_h__ */
