/** * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER within this package. */ #include #ifndef _INC_OLE #define _INC_OLE #ifdef __cplusplus extern "C" { #endif #ifndef WINAPI #define WINAPI PASCAL #define CALLBACK PASCAL #define LPCSTR LPSTR #define LRESULT LONG_PTR #define HGLOBAL HANDLE #endif #ifdef STRICT #define OLE_LPCSTR LPCSTR #define OLE_CONST const #else #define OLE_LPCSTR LPSTR #define OLE_CONST #endif #define LRESULT LONG_PTR #define HGLOBAL HANDLE #define OT_LINK __MSABI_LONG(1) #define OT_EMBEDDED __MSABI_LONG(2) #define OT_STATIC __MSABI_LONG(3) #define OLEVERB_PRIMARY 0 typedef struct _OLETARGETDEVICE { USHORT otdDeviceNameOffset; USHORT otdDriverNameOffset; USHORT otdPortNameOffset; USHORT otdExtDevmodeOffset; USHORT otdExtDevmodeSize; USHORT otdEnvironmentOffset; USHORT otdEnvironmentSize; BYTE otdData[1]; } OLETARGETDEVICE; typedef OLETARGETDEVICE *LPOLETARGETDEVICE; #define OF_SET 0x1 #define OF_GET 0x2 #define OF_HANDLER 0x4 typedef enum { OLE_OK, OLE_WAIT_FOR_RELEASE, OLE_BUSY, OLE_ERROR_PROTECT_ONLY, OLE_ERROR_MEMORY, OLE_ERROR_STREAM, OLE_ERROR_STATIC, OLE_ERROR_BLANK, OLE_ERROR_DRAW, OLE_ERROR_METAFILE, OLE_ERROR_ABORT, OLE_ERROR_CLIPBOARD, OLE_ERROR_FORMAT, OLE_ERROR_OBJECT, OLE_ERROR_OPTION, OLE_ERROR_PROTOCOL, OLE_ERROR_ADDRESS, OLE_ERROR_NOT_EQUAL, OLE_ERROR_HANDLE, OLE_ERROR_GENERIC, OLE_ERROR_CLASS, OLE_ERROR_SYNTAX, OLE_ERROR_DATATYPE, OLE_ERROR_PALETTE, OLE_ERROR_NOT_LINK, OLE_ERROR_NOT_EMPTY, OLE_ERROR_SIZE, OLE_ERROR_DRIVE, OLE_ERROR_NETWORK, OLE_ERROR_NAME, OLE_ERROR_TEMPLATE, OLE_ERROR_NEW, OLE_ERROR_EDIT, OLE_ERROR_OPEN, OLE_ERROR_NOT_OPEN, OLE_ERROR_LAUNCH, OLE_ERROR_COMM, OLE_ERROR_TERMINATE, OLE_ERROR_COMMAND, OLE_ERROR_SHOW, OLE_ERROR_DOVERB, OLE_ERROR_ADVISE_NATIVE, OLE_ERROR_ADVISE_PICT, OLE_ERROR_ADVISE_RENAME, OLE_ERROR_POKE_NATIVE, OLE_ERROR_REQUEST_NATIVE, OLE_ERROR_REQUEST_PICT, OLE_ERROR_SERVER_BLOCKED, OLE_ERROR_REGISTRATION, OLE_ERROR_ALREADY_REGISTERED, OLE_ERROR_TASK, OLE_ERROR_OUTOFDATE, OLE_ERROR_CANT_UPDATE_CLIENT, OLE_ERROR_UPDATE, OLE_ERROR_SETDATA_FORMAT, OLE_ERROR_STATIC_FROM_OTHER_OS, OLE_ERROR_FILE_VER, OLE_WARN_DELETE_DATA = 1000 } OLESTATUS; typedef enum { OLE_CHANGED, OLE_SAVED, OLE_CLOSED, OLE_RENAMED, OLE_QUERY_PAINT, OLE_RELEASE, OLE_QUERY_RETRY } OLE_NOTIFICATION; typedef enum { OLE_NONE, OLE_DELETE, OLE_LNKPASTE, OLE_EMBPASTE, OLE_SHOW, OLE_RUN, OLE_ACTIVATE, OLE_UPDATE, OLE_CLOSE, OLE_RECONNECT, OLE_SETUPDATEOPTIONS, OLE_SERVERUNLAUNCH, OLE_LOADFROMSTREAM, OLE_SETDATA, OLE_REQUESTDATA, OLE_OTHER, OLE_CREATE, OLE_CREATEFROMTEMPLATE, OLE_CREATELINKFROMFILE, OLE_COPYFROMLNK, OLE_CREATEFROMFILE, OLE_CREATEINVISIBLE } OLE_RELEASE_METHOD; typedef enum { olerender_none, olerender_draw, olerender_format } OLEOPT_RENDER; typedef WORD OLECLIPFORMAT; typedef enum { oleupdate_always, oleupdate_onsave, #ifdef OLE_INTERNAL oleupdate_oncall, oleupdate_onclose #else oleupdate_oncall #endif } OLEOPT_UPDATE; typedef HANDLE HOBJECT; typedef LONG_PTR LHSERVER; typedef LONG_PTR LHCLIENTDOC; typedef LONG_PTR LHSERVERDOC; typedef struct _OLEOBJECT *LPOLEOBJECT; typedef struct _OLESTREAM *LPOLESTREAM; typedef struct _OLECLIENT *LPOLECLIENT; typedef struct _OLEOBJECTVTBL { void *(CALLBACK *QueryProtocol) (LPOLEOBJECT, OLE_LPCSTR); OLESTATUS (CALLBACK *Release) (LPOLEOBJECT); OLESTATUS (CALLBACK *Show) (LPOLEOBJECT, WINBOOL); OLESTATUS (CALLBACK *DoVerb) (LPOLEOBJECT, UINT, WINBOOL, WINBOOL); OLESTATUS (CALLBACK *GetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE *); OLESTATUS (CALLBACK *SetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE); OLESTATUS (CALLBACK *SetTargetDevice) (LPOLEOBJECT, HGLOBAL); OLESTATUS (CALLBACK *SetBounds) (LPOLEOBJECT, OLE_CONST RECT *); OLECLIPFORMAT (CALLBACK *EnumFormats) (LPOLEOBJECT, OLECLIPFORMAT); OLESTATUS (CALLBACK *SetColorScheme) (LPOLEOBJECT, OLE_CONST LOGPALETTE *); #ifndef SERVERONLY OLESTATUS (CALLBACK *Delete) (LPOLEOBJECT); OLESTATUS (CALLBACK *SetHostNames) (LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR); OLESTATUS (CALLBACK *SaveToStream) (LPOLEOBJECT, LPOLESTREAM); OLESTATUS (CALLBACK *Clone) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); OLESTATUS (CALLBACK *CopyFromLink) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); OLESTATUS (CALLBACK *Equal) (LPOLEOBJECT, LPOLEOBJECT); OLESTATUS (CALLBACK *CopyToClipboard) (LPOLEOBJECT); OLESTATUS (CALLBACK *Draw) (LPOLEOBJECT, HDC, OLE_CONST RECT *, OLE_CONST RECT *, HDC); OLESTATUS (CALLBACK *Activate) (LPOLEOBJECT, UINT, WINBOOL, WINBOOL, HWND, OLE_CONST RECT *); OLESTATUS (CALLBACK *Execute) (LPOLEOBJECT, HGLOBAL, UINT); OLESTATUS (CALLBACK *Close) (LPOLEOBJECT); OLESTATUS (CALLBACK *Update) (LPOLEOBJECT); OLESTATUS (CALLBACK *Reconnect) (LPOLEOBJECT); OLESTATUS (CALLBACK *ObjectConvert) (LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); OLESTATUS (CALLBACK *GetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE *); OLESTATUS (CALLBACK *SetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE); OLESTATUS (CALLBACK *Rename) (LPOLEOBJECT, OLE_LPCSTR); OLESTATUS (CALLBACK *QueryName) (LPOLEOBJECT, LPSTR, UINT *); OLESTATUS (CALLBACK *QueryType) (LPOLEOBJECT, LONG *); OLESTATUS (CALLBACK *QueryBounds) (LPOLEOBJECT, RECT *); OLESTATUS (CALLBACK *QuerySize) (LPOLEOBJECT, DWORD *); OLESTATUS (CALLBACK *QueryOpen) (LPOLEOBJECT); OLESTATUS (CALLBACK *QueryOutOfDate) (LPOLEOBJECT); OLESTATUS (CALLBACK *QueryReleaseStatus) (LPOLEOBJECT); OLESTATUS (CALLBACK *QueryReleaseError) (LPOLEOBJECT); OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod) (LPOLEOBJECT); OLESTATUS (CALLBACK *RequestData) (LPOLEOBJECT, OLECLIPFORMAT); OLESTATUS (CALLBACK *ObjectLong) (LPOLEOBJECT, UINT, LONG *); OLESTATUS (CALLBACK *ChangeData) (LPOLEOBJECT, HANDLE, LPOLECLIENT, WINBOOL); #endif } OLEOBJECTVTBL; typedef OLEOBJECTVTBL *LPOLEOBJECTVTBL; #ifndef OLE_INTERNAL typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; } OLEOBJECT; #endif typedef struct _OLECLIENTVTBL { int (CALLBACK *CallBack) (LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT); } OLECLIENTVTBL; typedef OLECLIENTVTBL *LPOLECLIENTVTBL; typedef struct _OLECLIENT { LPOLECLIENTVTBL lpvtbl; } OLECLIENT; typedef struct _OLESTREAMVTBL { DWORD (CALLBACK *Get) (LPOLESTREAM, void *, DWORD); DWORD (CALLBACK *Put) (LPOLESTREAM, OLE_CONST void *, DWORD); } OLESTREAMVTBL; typedef OLESTREAMVTBL *LPOLESTREAMVTBL; typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM; #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) OLESTATUS WINAPI OleDelete (LPOLEOBJECT); OLESTATUS WINAPI OleRelease (LPOLEOBJECT); OLESTATUS WINAPI OleSaveToStream (LPOLEOBJECT, LPOLESTREAM); OLESTATUS WINAPI OleEqual (LPOLEOBJECT, LPOLEOBJECT); OLESTATUS WINAPI OleCopyToClipboard (LPOLEOBJECT); OLESTATUS WINAPI OleSetHostNames (LPOLEOBJECT, LPCSTR, LPCSTR); OLESTATUS WINAPI OleSetTargetDevice (LPOLEOBJECT, HGLOBAL); OLESTATUS WINAPI OleSetBounds (LPOLEOBJECT, const RECT *); OLESTATUS WINAPI OleSetColorScheme (LPOLEOBJECT, const LOGPALETTE *); OLESTATUS WINAPI OleQueryBounds (LPOLEOBJECT, RECT *); OLESTATUS WINAPI OleQuerySize (LPOLEOBJECT, DWORD *); OLESTATUS WINAPI OleDraw (LPOLEOBJECT, HDC, const RECT *, const RECT *, HDC); OLESTATUS WINAPI OleQueryOpen (LPOLEOBJECT); OLESTATUS WINAPI OleActivate (LPOLEOBJECT, UINT, WINBOOL, WINBOOL, HWND, const RECT *); OLESTATUS WINAPI OleExecute (LPOLEOBJECT, HGLOBAL, UINT); OLESTATUS WINAPI OleClose (LPOLEOBJECT); OLESTATUS WINAPI OleUpdate (LPOLEOBJECT); OLESTATUS WINAPI OleReconnect (LPOLEOBJECT); OLESTATUS WINAPI OleGetLinkUpdateOptions (LPOLEOBJECT, OLEOPT_UPDATE *); OLESTATUS WINAPI OleSetLinkUpdateOptions (LPOLEOBJECT, OLEOPT_UPDATE); void *WINAPI OleQueryProtocol (LPOLEOBJECT, LPCSTR); OLESTATUS WINAPI OleQueryReleaseStatus (LPOLEOBJECT); OLESTATUS WINAPI OleQueryReleaseError (LPOLEOBJECT); OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod (LPOLEOBJECT); OLESTATUS WINAPI OleQueryType (LPOLEOBJECT, LONG *); DWORD WINAPI OleQueryClientVersion (void); DWORD WINAPI OleQueryServerVersion (void); OLECLIPFORMAT WINAPI OleEnumFormats (LPOLEOBJECT, OLECLIPFORMAT); OLESTATUS WINAPI OleGetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE *); OLESTATUS WINAPI OleSetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE); OLESTATUS WINAPI OleQueryOutOfDate (LPOLEOBJECT); OLESTATUS WINAPI OleRequestData (LPOLEOBJECT, OLECLIPFORMAT); OLESTATUS WINAPI OleQueryLinkFromClip (LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleQueryCreateFromClip (LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleCreateFromClip (LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleCreateLinkFromClip (LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleCreateFromFile (LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleCreateLinkFromFile (LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleLoadFromStream (LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); OLESTATUS WINAPI OleCreate (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleCreateInvisible (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT, WINBOOL); OLESTATUS WINAPI OleCreateFromTemplate (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); OLESTATUS WINAPI OleClone (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); OLESTATUS WINAPI OleCopyFromLink (LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); OLESTATUS WINAPI OleObjectConvert (LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); OLESTATUS WINAPI OleRename (LPOLEOBJECT, LPCSTR); OLESTATUS WINAPI OleQueryName (LPOLEOBJECT lpobj, LPSTR lpBuf, UINT *lpcbBuf); OLESTATUS WINAPI OleRevokeObject (LPOLECLIENT); WINBOOL WINAPI OleIsDcMeta (HDC); OLESTATUS WINAPI OleRegisterClientDoc (LPCSTR, LPCSTR, LONG, LHCLIENTDOC *); OLESTATUS WINAPI OleRevokeClientDoc (LHCLIENTDOC); OLESTATUS WINAPI OleRenameClientDoc (LHCLIENTDOC, LPCSTR); OLESTATUS WINAPI OleRevertClientDoc (LHCLIENTDOC); OLESTATUS WINAPI OleSavedClientDoc (LHCLIENTDOC); OLESTATUS WINAPI OleEnumObjects (LHCLIENTDOC, LPOLEOBJECT *); typedef enum { OLE_SERVER_MULTI, OLE_SERVER_SINGLE } OLE_SERVER_USE; typedef struct _OLESERVER *LPOLESERVER; typedef struct _OLESERVERDOC *LPOLESERVERDOC; OLESTATUS WINAPI OleRegisterServer (LPCSTR, LPOLESERVER, LHSERVER *, HINSTANCE, OLE_SERVER_USE); OLESTATUS WINAPI OleRevokeServer (LHSERVER); OLESTATUS WINAPI OleBlockServer (LHSERVER); OLESTATUS WINAPI OleUnblockServer (LHSERVER, WINBOOL *); OLESTATUS WINAPI OleLockServer (LPOLEOBJECT, LHSERVER *); OLESTATUS WINAPI OleUnlockServer (LHSERVER); OLESTATUS WINAPI OleRegisterServerDoc (LHSERVER, LPCSTR, LPOLESERVERDOC, LHSERVERDOC *); OLESTATUS WINAPI OleRevokeServerDoc (LHSERVERDOC); OLESTATUS WINAPI OleRenameServerDoc (LHSERVERDOC, LPCSTR); OLESTATUS WINAPI OleRevertServerDoc (LHSERVERDOC); OLESTATUS WINAPI OleSavedServerDoc (LHSERVERDOC); #endif typedef struct _OLESERVERVTBL { OLESTATUS (CALLBACK *Open) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC *); OLESTATUS (CALLBACK *Create) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); OLESTATUS (CALLBACK *CreateFromTemplate) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); OLESTATUS (CALLBACK *Edit) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); _Analysis_noreturn_ OLESTATUS (CALLBACK *Exit) (LPOLESERVER); OLESTATUS (CALLBACK *Release) (LPOLESERVER); OLESTATUS (CALLBACK *Execute) (LPOLESERVER, HGLOBAL); } OLESERVERVTBL; typedef OLESERVERVTBL *LPOLESERVERVTBL; typedef struct _OLESERVER { LPOLESERVERVTBL lpvtbl; } OLESERVER; typedef struct _OLESERVERDOCVTBL { OLESTATUS (CALLBACK *Save) (LPOLESERVERDOC); OLESTATUS (CALLBACK *Close) (LPOLESERVERDOC); OLESTATUS (CALLBACK *SetHostNames) (LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR); OLESTATUS (CALLBACK *SetDocDimensions) (LPOLESERVERDOC, OLE_CONST RECT *); OLESTATUS (CALLBACK *GetObject) (LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT *, LPOLECLIENT); OLESTATUS (CALLBACK *Release) (LPOLESERVERDOC); OLESTATUS (CALLBACK *SetColorScheme) (LPOLESERVERDOC, OLE_CONST LOGPALETTE *); OLESTATUS (CALLBACK *Execute) (LPOLESERVERDOC, HGLOBAL); } OLESERVERDOCVTBL; typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL; typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC; #ifdef __cplusplus } #endif #endif