/*** Autogenerated by WIDL 1.3.12 from mstask.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_MSTASK_H
#define __WIDL_MSTASK_H

/* Forward declarations */

#ifndef __IEnumWorkItems_FWD_DEFINED__
#define __IEnumWorkItems_FWD_DEFINED__
typedef interface IEnumWorkItems IEnumWorkItems;
#endif

#ifndef __IProvideTaskPage_FWD_DEFINED__
#define __IProvideTaskPage_FWD_DEFINED__
typedef interface IProvideTaskPage IProvideTaskPage;
#endif

#ifndef __ITaskTrigger_FWD_DEFINED__
#define __ITaskTrigger_FWD_DEFINED__
typedef interface ITaskTrigger ITaskTrigger;
#endif

#ifndef __IScheduledWorkItem_FWD_DEFINED__
#define __IScheduledWorkItem_FWD_DEFINED__
typedef interface IScheduledWorkItem IScheduledWorkItem;
#endif

#ifndef __ITask_FWD_DEFINED__
#define __ITask_FWD_DEFINED__
typedef interface ITask ITask;
#endif

#ifndef __ITaskScheduler_FWD_DEFINED__
#define __ITaskScheduler_FWD_DEFINED__
typedef interface ITaskScheduler ITaskScheduler;
#endif

#ifndef __CTaskScheduler_FWD_DEFINED__
#define __CTaskScheduler_FWD_DEFINED__
typedef struct CTaskScheduler CTaskScheduler;
#endif /* defined __CTaskScheduler_FWD_DEFINED__ */

#ifndef __CTask_FWD_DEFINED__
#define __CTask_FWD_DEFINED__
typedef struct CTask CTask;
#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_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)
interface 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;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumWorkItems_Next_Proxy(
    IEnumWorkItems* This,
    ULONG celt,
    LPWSTR **rgpwszNames,
    ULONG *pceltFetched);
void __RPC_STUB IEnumWorkItems_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWorkItems_Skip_Proxy(
    IEnumWorkItems* This,
    ULONG celt);
void __RPC_STUB IEnumWorkItems_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWorkItems_Reset_Proxy(
    IEnumWorkItems* This);
void __RPC_STUB IEnumWorkItems_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWorkItems_Clone_Proxy(
    IEnumWorkItems* This,
    IEnumWorkItems **ppEnumWorkItems);
void __RPC_STUB IEnumWorkItems_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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)
interface IProvideTaskPage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPage(
        TASKPAGE tpType,
        BOOL fPersistChanges,
        HPROPSHEETPAGE *phPage) = 0;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IProvideTaskPage_GetPage_Proxy(
    IProvideTaskPage* This,
    TASKPAGE tpType,
    BOOL fPersistChanges,
    HPROPSHEETPAGE *phPage);
void __RPC_STUB IProvideTaskPage_GetPage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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)
interface 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;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE ITaskTrigger_SetTrigger_Proxy(
    ITaskTrigger* This,
    const PTASK_TRIGGER pTrigger);
void __RPC_STUB ITaskTrigger_SetTrigger_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskTrigger_GetTrigger_Proxy(
    ITaskTrigger* This,
    PTASK_TRIGGER pTrigger);
void __RPC_STUB ITaskTrigger_GetTrigger_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskTrigger_GetTriggerString_Proxy(
    ITaskTrigger* This,
    LPWSTR *ppwszTrigger);
void __RPC_STUB ITaskTrigger_GetTriggerString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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)
interface 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;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE IScheduledWorkItem_CreateTrigger_Proxy(
    IScheduledWorkItem* This,
    WORD *piNewTrigger,
    ITaskTrigger **ppTrigger);
void __RPC_STUB IScheduledWorkItem_CreateTrigger_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_DeleteTrigger_Proxy(
    IScheduledWorkItem* This,
    WORD iTrigger);
void __RPC_STUB IScheduledWorkItem_DeleteTrigger_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetTriggerCount_Proxy(
    IScheduledWorkItem* This,
    WORD *plCount);
void __RPC_STUB IScheduledWorkItem_GetTriggerCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetTrigger_Proxy(
    IScheduledWorkItem* This,
    WORD iTrigger,
    ITaskTrigger **ppTrigger);
void __RPC_STUB IScheduledWorkItem_GetTrigger_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetTriggerString_Proxy(
    IScheduledWorkItem* This,
    WORD iTrigger,
    LPWSTR *ppwszTrigger);
void __RPC_STUB IScheduledWorkItem_GetTriggerString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetRunTimes_Proxy(
    IScheduledWorkItem* This,
    const LPSYSTEMTIME pstBegin,
    const LPSYSTEMTIME pstEnd,
    WORD *pCount,
    LPSYSTEMTIME *rgstTaskTimes);
void __RPC_STUB IScheduledWorkItem_GetRunTimes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetNextRunTime_Proxy(
    IScheduledWorkItem* This,
    SYSTEMTIME *pstNextRun);
void __RPC_STUB IScheduledWorkItem_GetNextRunTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetIdleWait_Proxy(
    IScheduledWorkItem* This,
    WORD wIdleMinutes,
    WORD wDeadlineMinutes);
void __RPC_STUB IScheduledWorkItem_SetIdleWait_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetIdleWait_Proxy(
    IScheduledWorkItem* This,
    WORD *pwIdleMinutes,
    WORD *pwDeadlineMinutes);
void __RPC_STUB IScheduledWorkItem_GetIdleWait_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_Run_Proxy(
    IScheduledWorkItem* This);
void __RPC_STUB IScheduledWorkItem_Run_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_Terminate_Proxy(
    IScheduledWorkItem* This);
void __RPC_STUB IScheduledWorkItem_Terminate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_EditWorkItem_Proxy(
    IScheduledWorkItem* This,
    HWND hParent,
    DWORD dwReserved);
void __RPC_STUB IScheduledWorkItem_EditWorkItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetMostRecentRunTime_Proxy(
    IScheduledWorkItem* This,
    SYSTEMTIME *pstLastRun);
void __RPC_STUB IScheduledWorkItem_GetMostRecentRunTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetStatus_Proxy(
    IScheduledWorkItem* This,
    HRESULT *phrStatus);
void __RPC_STUB IScheduledWorkItem_GetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetExitCode_Proxy(
    IScheduledWorkItem* This,
    DWORD *pdwExitCode);
void __RPC_STUB IScheduledWorkItem_GetExitCode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetComment_Proxy(
    IScheduledWorkItem* This,
    LPCWSTR pwszComment);
void __RPC_STUB IScheduledWorkItem_SetComment_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetComment_Proxy(
    IScheduledWorkItem* This,
    LPWSTR *ppwszComment);
void __RPC_STUB IScheduledWorkItem_GetComment_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetCreator_Proxy(
    IScheduledWorkItem* This,
    LPCWSTR pwszCreator);
void __RPC_STUB IScheduledWorkItem_SetCreator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetCreator_Proxy(
    IScheduledWorkItem* This,
    LPWSTR *ppwszCreator);
void __RPC_STUB IScheduledWorkItem_GetCreator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetWorkItemData_Proxy(
    IScheduledWorkItem* This,
    WORD cBytes,
    BYTE rgbData[]);
void __RPC_STUB IScheduledWorkItem_SetWorkItemData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetWorkItemData_Proxy(
    IScheduledWorkItem* This,
    WORD *pcBytes,
    BYTE **ppBytes);
void __RPC_STUB IScheduledWorkItem_GetWorkItemData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetErrorRetryCount_Proxy(
    IScheduledWorkItem* This,
    WORD wRetryCount);
void __RPC_STUB IScheduledWorkItem_SetErrorRetryCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetErrorRetryCount_Proxy(
    IScheduledWorkItem* This,
    WORD *pwRetryCount);
void __RPC_STUB IScheduledWorkItem_GetErrorRetryCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetErrorRetryInterval_Proxy(
    IScheduledWorkItem* This,
    WORD wRetryInterval);
void __RPC_STUB IScheduledWorkItem_SetErrorRetryInterval_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetErrorRetryInterval_Proxy(
    IScheduledWorkItem* This,
    WORD *pwRetryInterval);
void __RPC_STUB IScheduledWorkItem_GetErrorRetryInterval_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetFlags_Proxy(
    IScheduledWorkItem* This,
    DWORD dwFlags);
void __RPC_STUB IScheduledWorkItem_SetFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetFlags_Proxy(
    IScheduledWorkItem* This,
    DWORD *pdwFlags);
void __RPC_STUB IScheduledWorkItem_GetFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_SetAccountInformation_Proxy(
    IScheduledWorkItem* This,
    LPCWSTR pwszAccountName,
    LPCWSTR pwszPassword);
void __RPC_STUB IScheduledWorkItem_SetAccountInformation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IScheduledWorkItem_GetAccountInformation_Proxy(
    IScheduledWorkItem* This,
    LPWSTR *ppwszAccountName);
void __RPC_STUB IScheduledWorkItem_GetAccountInformation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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)
interface 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;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE ITask_SetApplicationName_Proxy(
    ITask* This,
    LPCWSTR pwszApplicationName);
void __RPC_STUB ITask_SetApplicationName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetApplicationName_Proxy(
    ITask* This,
    LPWSTR *ppwszApplicationName);
void __RPC_STUB ITask_GetApplicationName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_SetParameters_Proxy(
    ITask* This,
    LPCWSTR pwszParameters);
void __RPC_STUB ITask_SetParameters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetParameters_Proxy(
    ITask* This,
    LPWSTR *ppwszParameters);
void __RPC_STUB ITask_GetParameters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_SetWorkingDirectory_Proxy(
    ITask* This,
    LPCWSTR pwszWorkingDirectory);
void __RPC_STUB ITask_SetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetWorkingDirectory_Proxy(
    ITask* This,
    LPWSTR *ppwszWorkingDirectory);
void __RPC_STUB ITask_GetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_SetPriority_Proxy(
    ITask* This,
    DWORD dwPriority);
void __RPC_STUB ITask_SetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetPriority_Proxy(
    ITask* This,
    DWORD *pdwPriority);
void __RPC_STUB ITask_GetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_SetTaskFlags_Proxy(
    ITask* This,
    DWORD dwFlags);
void __RPC_STUB ITask_SetTaskFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetTaskFlags_Proxy(
    ITask* This,
    DWORD *pdwFlags);
void __RPC_STUB ITask_GetTaskFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_SetMaxRunTime_Proxy(
    ITask* This,
    DWORD dwMaxRunTime);
void __RPC_STUB ITask_SetMaxRunTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITask_GetMaxRunTime_Proxy(
    ITask* This,
    DWORD *pdwMaxRunTime);
void __RPC_STUB ITask_GetMaxRunTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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)
interface 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;

};
#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
/*** 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)
#endif

#endif

HRESULT STDMETHODCALLTYPE ITaskScheduler_SetTargetComputer_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszComputer);
void __RPC_STUB ITaskScheduler_SetTargetComputer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_GetTargetComputer_Proxy(
    ITaskScheduler* This,
    LPWSTR *ppwszComputer);
void __RPC_STUB ITaskScheduler_GetTargetComputer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_Enum_Proxy(
    ITaskScheduler* This,
    IEnumWorkItems **ppEnumTasks);
void __RPC_STUB ITaskScheduler_Enum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_Activate_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszName,
    REFIID riid,
    IUnknown **ppunk);
void __RPC_STUB ITaskScheduler_Activate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_Delete_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszName);
void __RPC_STUB ITaskScheduler_Delete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_NewWorkItem_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszTaskName,
    REFCLSID rclsid,
    REFIID riid,
    IUnknown **ppunk);
void __RPC_STUB ITaskScheduler_NewWorkItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_AddWorkItem_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszTaskName,
    IScheduledWorkItem *pWorkItem);
void __RPC_STUB ITaskScheduler_AddWorkItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskScheduler_IsOfType_Proxy(
    ITaskScheduler* This,
    LPCWSTR pwszName,
    REFIID riid);
void __RPC_STUB ITaskScheduler_IsOfType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ITaskScheduler_INTERFACE_DEFINED__ */

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

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

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

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

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_MSTASK_H */
