Windows2003-3790/inetcore/urlmon/idl/actx.idl
2020-09-30 16:53:55 +02:00

623 lines
20 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: ActX.idl
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 11-17-1996 JohannP (Johann Posch) Created
//
//----------------------------------------------------------------------------
import "objidl.idl";
import "oleidl.idl";
import "ocidl.idl";
//import "propbag2.idl";
interface IPackage;
interface IAcceptor;
interface ICourier;
interface IPackageFilter;
typedef GUID DESTID;
typedef REFGUID REFDESTID;
typedef [unique] IAcceptor *LPACCEPTOR;
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: The package description and IPackage interface definition
//
// Description:
//
// Each package (IPackage) has an idendifier (ITEMID) which is a guid and
// itentifies the package type
//
// An package is an object which can be send to a distination object via
// a particular interface. The delivery mechanism can be a
// scheduler or an advisor.
//
// The sources of an package can be any any object or module.
//
// An package can scheduled and delivered to the destination(s) according
// the trigger time.
//
// An package might be as simple as an alert or notification. It can
// be a full object form the cache or the docfile. It can be an
// announcment and data might not be available yet.
//
// Many packages will in fact arrive with all data.
//
// The same object will expose I(Async)Moniker and the client
// can call BindToXXX to bind to the object of the data.
//
//----------------------------------------------------------------------------
typedef GUID PACKAGEID, *PPACKAGEID;
typedef REFGUID REFPACKAGEID;
cpp_quote("")
cpp_quote("////////////////////////////////////////////////////////////////////////////")
cpp_quote("// Standard Package IDs ")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_NULL ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_ANOUNCMENT ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASK ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_ALERT ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_NOTIFICATION_INET_IDLE ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_NOTIFICATION_INET_OFFLINE ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_NOTIFICATION_INET_ONLINE ;")
cpp_quote("")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASKS_SUSPEND ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASKS_RESUME ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASKS_ABORT ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASKS_COMPLETED ;")
cpp_quote("EXTERN_C const PACKAGEID PACKAGEID_TASKS_PROGRESS ;")
cpp_quote("")
cpp_quote("#ifndef _LPPACKAGEOBJ")
cpp_quote("#define _LPPACKAGEOBJ")
[
local,
object,
uuid(79eacbe1-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IPackageObj : IPropertyBag
{
typedef [unique] IPackageObj *LPPACKAGEOBJ;
//
// information about the package itself
// passed on by the creator of the package to the scheduler
// and to the advisor
typedef enum _tagPACKAGE_FLAGS
{
// the package is very simple and has no object, eg. alert
PF_NO_OBJECT = 0x00000001
// the package is not a simple object - is a derived object form Package
,PF_NO_SIMPLE_OBJECT = 0x00000002
// package can not be persisted
,PF_NOT_PERSISTABLE = 0x00000004
// the sender of the package wants to notified when done
// the the package task
,PF_NEED_COMPLETIONREPORT = 0x00000004
// the send wants progress report
,PF_NEED_PROGRESSREPORT = 0x00000008
// the sender provides cookie
,PF_USE_COOKIE = 0x00000010
// member of group - the packages
// are delivered sequentiall - meaning
// a completion report is send by each one
,PF_GROUP_SEQUENTIAL = 0x00000100
// member of group - the packages
// are delivered at the same time
,PF_GROUP_PARALLEL = 0x00000200
} PACKAGE_FLAGS;
//
// Package data specific information
// an package may have the following data components
//
typedef enum _tagPACKAGEDATA_FLAGS
{
// the package has data via the storage medium
PD_DATA = 0x00000001
// package has a URL
,PD_URL = 0x00000002
// package has a name
,PD_NAME = 0x00000004
// mime of package data is known
,PD_MIME = 0x00000008
// class if package data is know
,PD_CLASSID = 0x00000010
// package has a group id - obtained with GetTickCount
,PD_GRUPPID = 0x00000020
// package is coming from the cache
,PD_FROMCACHE = 0x00010000
// other flags
,PD_VOLATILE = 0x00020000
} PACKAGEDATA_FLAGS;
typedef struct _tagPackageData
{
ULONG cbSize;
PACKAGE_FLAGS packageF;
PACKAGEDATA_FLAGS packagedataF;
// package specific information
// what does the basic package need?
LPOLESTR wzName;
LPOLESTR wzUrl;
LPOLESTR wzMime;
CLSID clsid;
// the prefered tymed the client wants the data
TYMED tymedPrefered;
STGMEDIUM stgmed;
} PACKAGEDATA, *LPPACKAGEDATA;
//
// the package cookie is the time the package was scheduled
// or created. the scheduler might map the cookie
// the package cookie can be NULL.
//
typedef SYSTEMTIME PACKAGECOOKIE, *PPACKAGECOOKIE;
//
// the adivse mode indicates how the adivse should be done
//
typedef enum _tagDELIVERMODE
{
// packages are advised async be default
//AM_ASYNCHRONOUS = 0x00000000
// the package should be delivered sync
DM_SYNCHRONOUS = 0x00000001
// the package should be delivered input-sync
,DM_INPUTSYNCHRONOUS = 0x00000001
// deliver package only if class is registered
,DM_ONLY_IF_RUNNING = 0x00000002
// advise and close/release the class
,DM_RUN_AND_CLOSE = 0x00000004
// send it delayed and compress
// meaning all the package is delayed for
// a certainrDestReports time - the last package of this kind
// gets send
,DM_DELAY_AND_COMPRESS = 0x00000008
// always deliver the package
// even on was transmited just imedialty before
,DM_DELIVER_ALWAYS = 0x00000010
} DELIVERMODE;
typedef struct _tagPackage_X
{
ULONG cbSize;
REFPACKAGEID rpackageid;
LPPACKAGEOBJ pPackageObj;
PACKAGE_FLAGS packageFlags;
PACKAGEDATA_FLAGS packagedataFlags;
PACKAGECOOKIE packageCookie;
DELIVERMODE deliverMode;
//REFDESTID rPackageDest;
REFDESTID rReportDest;
//LPACCEPTOR pAcceptorDest;
DWORD dwReserved;
} PACKAGE_X;
typedef struct _tagDeliveryPackage
{
ULONG cbSize;
// info about the package
PPACKAGEID pPackageid;
LPPACKAGEOBJ pPackageObj;
PACKAGE_FLAGS PackageFlags;
PACKAGECOOKIE PackageCookie;
DWORD dwReserved;
// info about transmiter
// the acceptor can be NULL meaning
// the tranmiter does not want progress
LPACCEPTOR pAcceptorDest;
} PACKAGE, *PPACKAGE;
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: IAcceptor interface definition
//
// Description:
//
// The Acceptor is the interface where an package gets delivered too.
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPACCEPTOR_DEFINED")
cpp_quote("#define _LPACCEPTOR_DEFINED")
[
local,
object,
uuid(79eacbe2-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IAcceptor : IUnknown
{
// typedef [unique] IAcceptor *LPACCEPTOR;
HRESULT OnPackage(
[in] PPACKAGE pPackage,
[in] DWORD dwReserved
);
}
cpp_quote("#endif")
//
// An acceptor can return the following scode, which means the sink support
// the IAcceptor interface and it will send notifications on the task
// progress
//
cpp_quote("#define AX_S_CAN_ADVISEON _HRESULT_TYPEDEF_(0x000401E9L) ")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: IPackageObj destination definition
//
// Description:
//
// Each Package needs to be delivered to one or more destinations.
// A destination is indendified (DESTID) by a class id.
//
// The interface of the destination is an IAcceptor interface which
// is described below.
//
//----------------------------------------------------------------------------
//typedef GUID DESTID;
//typedef REFGUID REFDESTID;
cpp_quote("")
cpp_quote("////////////////////////////////////////////////////////////////////////////")
cpp_quote("// Default Destinations ")
cpp_quote("EXTERN_C const DESTID DESTID_GLOBAL_COURIER ;")
cpp_quote("EXTERN_C const DESTID DESTID_PROCESS_COURIER ;")
cpp_quote("EXTERN_C const DESTID DESTID_THREAD_COURIER ;")
cpp_quote("")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: IEnumPackage interface definition
//
// Description:
//
// Enumerator overn Packages.
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPENUMPACKAGE_DEFINED")
cpp_quote("#define _LPENUMPACKAGE_DEFINED")
[
local,
object,
uuid(79eacbe4-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IEnumPackage : IUnknown
{
typedef [unique] IEnumPackage *LPENUMPACKAGE;
[local]
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)]
PACKAGE *rgelt,
[out] ULONG *pceltFetched);
[call_as(Next)]
HRESULT RemoteNext(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)]
PACKAGE *rgelt,
[out] ULONG *pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IEnumPackage **ppenum);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: ICourier interface definition
//
// Description:
//
// This is the object provide by webcheck will can start listening on
// different protocols (APP) by using the custom verb "listen".
//
// The clien can also add an package to the agents scheduler or spooler which
// will the package deliver to a distination at a given "WHEN"
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPCOURIER_DEFINED")
cpp_quote("#define _LPCOURIER_DEFINED")
[
local,
object,
uuid(79eacbe6-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface ICourier : IUnknown
{
typedef [unique] ICourier *LPCOURIER;
typedef enum _tagACCEPTOR_MODE
{
//AM_All = 0x00000001
// exclusive means deliver only
// package of the registered type
AM_Exclusive = 0x00000001
// launch me if an package of
// registered types arrives
,AM_Intantiate = 0x00000002
} ACCEPTORMODE;
#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 (0x1)
#define TASK_FLAG_DELETE_WHEN_DONE (0x2)
#define TASK_FLAG_DISABLED (0x4)
#define TASK_FLAG_HALT_ON_ERROR (0x8)
#define TASK_FLAG_START_ONLY_IF_IDLE (0x10)
#define TASK_FLAG_KILL_ON_IDLE_END (0x20)
#define TASK_FLAG_DONT_START_IF_ON_BATTERIES (0x40)
#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES (0x80)
#define TASK_FLAG_RUN_ONLY_IF_DOCKED (0x100)
#define TASK_FLAG_HIDDEN (0x200)
#define TASK_TRIGGER_FLAG_HAS_END_DATE (0x1)
#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END (0x2)
#define TASK_TRIGGER_FLAG_DISABLED (0x4)
#define TASK_TRIGGER_FLAG_LAST_DAY_OF_MONTH (0x8)
#define TASK_MAX_RUN_TIMES ( 1440 )
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 Reserved;
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;
} TASK_TRIGGER;
typedef struct _TASK_TRIGGER *PTASK_TRIGGER;
HRESULT Register(
[in] LPACCEPTOR pAcceptor, // can be null - see mode
[in] REFDESTID rPackageDest,
[in] ACCEPTORMODE asMode,
[in] ULONG cPackages,
[in] PPACKAGEID pPackageIDs,
[in] DWORD dwReserved
);
HRESULT Unregister(
[in] REFDESTID rPackageDest,
[in] ULONG cPackages,
[in] PPACKAGEID pPackageIDs
);
// deliver a package to a specific class object such as mail
// the class object will be instantiated
HRESULT DeliverPackage(
// info about who the sender
[in] REFCLSID rclsidSender, // class of sender
[in] LPACCEPTOR pAcceptor, // can be null - see mode
// the package
[in] PPACKAGE pPackage,
// deliver and schedule data
[in] DELIVERMODE deliverMode,
[in] PTASK_TRIGGER pschdata,
// destination
[in] REFDESTID rPackageDest,
// return info - cookie of package
[in, out] PPACKAGECOOKIE ppackageCookie,
[in] DWORD dwReserved
);
HRESULT CreatePackage(
[in] PPACKAGEID pPackageid,
[in] PACKAGE_FLAGS PackageFlags,
[in] PACKAGECOOKIE packageCookie,
// return info - the new package
[in] ULONG cPackages,
[out] PPACKAGE pPackage,
[in] DWORD dwReserved
);
HRESULT RevokePackage(
[in] PPACKAGECOOKIE ppackageCookie,
[in] DWORD dwMode
);
HRESULT GetEnumPackage(
[out] LPENUMPACKAGE pEnumPackage
);
}
cpp_quote("#endif")
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1995 - 1996.
//
// Contents: IPackageObjFilter interface definition
//
// Description: Not done yet!
//
// Used to filter anouncment of mc protocols.
//
//----------------------------------------------------------------------------
cpp_quote("#ifndef _LPPACKAGEOBJFILTER_DEFINED")
cpp_quote("#define _LPPACKAGEOBJFILTER_DEFINED")
[
local,
object,
uuid(79eacbe7-baf9-11ce-8c82-00aa004ba90b),
pointer_default(unique)
]
interface IPackageObjFilter : IUnknown
{
typedef [unique] IPackageObjFilter *LPPACKAGEOBJFILTER;
typedef struct _tagAnouncmentData
{
ULONG cbSize;
// more info about category etc.
DWORD dwCategory;
LPWSTR pwzFriendlyName;
LPCWSTR pwzUrl;
} ANOUNCMENTDATA, *LPANOUNCMENTDATA;
HRESULT Anouncment(
[in] ANOUNCMENTDATA *pAnouncementData,
[in] DWORD dwReserved
);
}
cpp_quote("#endif")