1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 #include <winapifamily.h> 6 7 #ifndef _INC_OLE 8 #define _INC_OLE 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #ifndef WINAPI 15 #define WINAPI PASCAL 16 #define CALLBACK PASCAL 17 #define LPCSTR LPSTR 18 #define LRESULT LONG_PTR 19 #define HGLOBAL HANDLE 20 #endif 21 22 #ifdef STRICT 23 #define OLE_LPCSTR LPCSTR 24 #define OLE_CONST const 25 #else 26 #define OLE_LPCSTR LPSTR 27 #define OLE_CONST 28 #endif 29 30 #define LRESULT LONG_PTR 31 #define HGLOBAL HANDLE 32 33 #define OT_LINK __MSABI_LONG(1) 34 #define OT_EMBEDDED __MSABI_LONG(2) 35 #define OT_STATIC __MSABI_LONG(3) 36 37 #define OLEVERB_PRIMARY 0 38 39 typedef struct _OLETARGETDEVICE { 40 USHORT otdDeviceNameOffset; 41 USHORT otdDriverNameOffset; 42 USHORT otdPortNameOffset; 43 USHORT otdExtDevmodeOffset; 44 USHORT otdExtDevmodeSize; 45 USHORT otdEnvironmentOffset; 46 USHORT otdEnvironmentSize; 47 BYTE otdData[1]; 48 } OLETARGETDEVICE; 49 typedef OLETARGETDEVICE *LPOLETARGETDEVICE; 50 51 #define OF_SET 0x1 52 #define OF_GET 0x2 53 #define OF_HANDLER 0x4 54 55 typedef enum { 56 OLE_OK, 57 OLE_WAIT_FOR_RELEASE, 58 OLE_BUSY, 59 OLE_ERROR_PROTECT_ONLY, 60 OLE_ERROR_MEMORY, 61 OLE_ERROR_STREAM, 62 OLE_ERROR_STATIC, 63 OLE_ERROR_BLANK, 64 OLE_ERROR_DRAW, 65 OLE_ERROR_METAFILE, 66 OLE_ERROR_ABORT, 67 OLE_ERROR_CLIPBOARD, 68 OLE_ERROR_FORMAT, 69 OLE_ERROR_OBJECT, 70 OLE_ERROR_OPTION, 71 OLE_ERROR_PROTOCOL, 72 OLE_ERROR_ADDRESS, 73 OLE_ERROR_NOT_EQUAL, 74 OLE_ERROR_HANDLE, 75 OLE_ERROR_GENERIC, 76 OLE_ERROR_CLASS, 77 OLE_ERROR_SYNTAX, 78 OLE_ERROR_DATATYPE, 79 OLE_ERROR_PALETTE, 80 OLE_ERROR_NOT_LINK, 81 OLE_ERROR_NOT_EMPTY, 82 OLE_ERROR_SIZE, 83 OLE_ERROR_DRIVE, 84 OLE_ERROR_NETWORK, 85 OLE_ERROR_NAME, 86 OLE_ERROR_TEMPLATE, 87 OLE_ERROR_NEW, 88 OLE_ERROR_EDIT, 89 OLE_ERROR_OPEN, 90 OLE_ERROR_NOT_OPEN, 91 OLE_ERROR_LAUNCH, 92 OLE_ERROR_COMM, 93 OLE_ERROR_TERMINATE, 94 OLE_ERROR_COMMAND, 95 OLE_ERROR_SHOW, 96 OLE_ERROR_DOVERB, 97 OLE_ERROR_ADVISE_NATIVE, 98 OLE_ERROR_ADVISE_PICT, 99 OLE_ERROR_ADVISE_RENAME, 100 OLE_ERROR_POKE_NATIVE, 101 OLE_ERROR_REQUEST_NATIVE, 102 OLE_ERROR_REQUEST_PICT, 103 OLE_ERROR_SERVER_BLOCKED, 104 OLE_ERROR_REGISTRATION, 105 OLE_ERROR_ALREADY_REGISTERED, 106 OLE_ERROR_TASK, 107 OLE_ERROR_OUTOFDATE, 108 OLE_ERROR_CANT_UPDATE_CLIENT, 109 OLE_ERROR_UPDATE, 110 OLE_ERROR_SETDATA_FORMAT, 111 OLE_ERROR_STATIC_FROM_OTHER_OS, 112 OLE_ERROR_FILE_VER, 113 OLE_WARN_DELETE_DATA = 1000 114 } OLESTATUS; 115 116 typedef enum { 117 OLE_CHANGED, 118 OLE_SAVED, 119 OLE_CLOSED, 120 OLE_RENAMED, 121 OLE_QUERY_PAINT, 122 OLE_RELEASE, 123 OLE_QUERY_RETRY 124 } OLE_NOTIFICATION; 125 126 typedef enum { 127 OLE_NONE, 128 OLE_DELETE, 129 OLE_LNKPASTE, 130 OLE_EMBPASTE, 131 OLE_SHOW, 132 OLE_RUN, 133 OLE_ACTIVATE, 134 OLE_UPDATE, 135 OLE_CLOSE, 136 OLE_RECONNECT, 137 OLE_SETUPDATEOPTIONS, 138 OLE_SERVERUNLAUNCH, 139 OLE_LOADFROMSTREAM, 140 OLE_SETDATA, 141 OLE_REQUESTDATA, 142 OLE_OTHER, 143 OLE_CREATE, 144 OLE_CREATEFROMTEMPLATE, 145 OLE_CREATELINKFROMFILE, 146 OLE_COPYFROMLNK, 147 OLE_CREATEFROMFILE, 148 OLE_CREATEINVISIBLE 149 } OLE_RELEASE_METHOD; 150 151 typedef enum { 152 olerender_none, 153 olerender_draw, 154 olerender_format 155 } OLEOPT_RENDER; 156 157 typedef WORD OLECLIPFORMAT; 158 159 typedef enum { 160 oleupdate_always, 161 oleupdate_onsave, 162 #ifdef OLE_INTERNAL 163 oleupdate_oncall, 164 oleupdate_onclose 165 #else 166 oleupdate_oncall 167 #endif 168 } OLEOPT_UPDATE; 169 170 typedef HANDLE HOBJECT; 171 typedef LONG_PTR LHSERVER; 172 typedef LONG_PTR LHCLIENTDOC; 173 typedef LONG_PTR LHSERVERDOC; 174 typedef struct _OLEOBJECT *LPOLEOBJECT; 175 typedef struct _OLESTREAM *LPOLESTREAM; 176 typedef struct _OLECLIENT *LPOLECLIENT; 177 typedef struct _OLEOBJECTVTBL { 178 void *(CALLBACK *QueryProtocol) (LPOLEOBJECT, OLE_LPCSTR); 179 OLESTATUS (CALLBACK *Release) (LPOLEOBJECT); 180 OLESTATUS (CALLBACK *Show) (LPOLEOBJECT, WINBOOL); 181 OLESTATUS (CALLBACK *DoVerb) (LPOLEOBJECT, UINT, WINBOOL, WINBOOL); 182 OLESTATUS (CALLBACK *GetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE *); 183 OLESTATUS (CALLBACK *SetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE); 184 OLESTATUS (CALLBACK *SetTargetDevice) (LPOLEOBJECT, HGLOBAL); 185 OLESTATUS (CALLBACK *SetBounds) (LPOLEOBJECT, OLE_CONST RECT *); 186 OLECLIPFORMAT (CALLBACK *EnumFormats) (LPOLEOBJECT, OLECLIPFORMAT); 187 OLESTATUS (CALLBACK *SetColorScheme) (LPOLEOBJECT, OLE_CONST LOGPALETTE *); 188 #ifndef SERVERONLY 189 OLESTATUS (CALLBACK *Delete) (LPOLEOBJECT); 190 OLESTATUS (CALLBACK *SetHostNames) (LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR); 191 OLESTATUS (CALLBACK *SaveToStream) (LPOLEOBJECT, LPOLESTREAM); 192 OLESTATUS (CALLBACK *Clone) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); 193 OLESTATUS (CALLBACK *CopyFromLink) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); 194 OLESTATUS (CALLBACK *Equal) (LPOLEOBJECT, LPOLEOBJECT); 195 OLESTATUS (CALLBACK *CopyToClipboard) (LPOLEOBJECT); 196 OLESTATUS (CALLBACK *Draw) (LPOLEOBJECT, HDC, OLE_CONST RECT *, OLE_CONST RECT *, HDC); 197 OLESTATUS (CALLBACK *Activate) (LPOLEOBJECT, UINT, WINBOOL, WINBOOL, HWND, OLE_CONST RECT *); 198 OLESTATUS (CALLBACK *Execute) (LPOLEOBJECT, HGLOBAL, UINT); 199 OLESTATUS (CALLBACK *Close) (LPOLEOBJECT); 200 OLESTATUS (CALLBACK *Update) (LPOLEOBJECT); 201 OLESTATUS (CALLBACK *Reconnect) (LPOLEOBJECT); 202 OLESTATUS (CALLBACK *ObjectConvert) (LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT *); 203 OLESTATUS (CALLBACK *GetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE *); 204 OLESTATUS (CALLBACK *SetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE); 205 OLESTATUS (CALLBACK *Rename) (LPOLEOBJECT, OLE_LPCSTR); 206 OLESTATUS (CALLBACK *QueryName) (LPOLEOBJECT, LPSTR, UINT *); 207 OLESTATUS (CALLBACK *QueryType) (LPOLEOBJECT, LONG *); 208 OLESTATUS (CALLBACK *QueryBounds) (LPOLEOBJECT, RECT *); 209 OLESTATUS (CALLBACK *QuerySize) (LPOLEOBJECT, DWORD *); 210 OLESTATUS (CALLBACK *QueryOpen) (LPOLEOBJECT); 211 OLESTATUS (CALLBACK *QueryOutOfDate) (LPOLEOBJECT); 212 OLESTATUS (CALLBACK *QueryReleaseStatus) (LPOLEOBJECT); 213 OLESTATUS (CALLBACK *QueryReleaseError) (LPOLEOBJECT); 214 OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod) (LPOLEOBJECT); 215 OLESTATUS (CALLBACK *RequestData) (LPOLEOBJECT, OLECLIPFORMAT); 216 OLESTATUS (CALLBACK *ObjectLong) (LPOLEOBJECT, UINT, LONG *); 217 OLESTATUS (CALLBACK *ChangeData) (LPOLEOBJECT, HANDLE, LPOLECLIENT, WINBOOL); 218 #endif 219 } OLEOBJECTVTBL; 220 221 typedef OLEOBJECTVTBL *LPOLEOBJECTVTBL; 222 #ifndef OLE_INTERNAL 223 typedef struct _OLEOBJECT { 224 LPOLEOBJECTVTBL lpvtbl; 225 } OLEOBJECT; 226 #endif 227 228 typedef struct _OLECLIENTVTBL { 229 int (CALLBACK *CallBack) (LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT); 230 } OLECLIENTVTBL; 231 232 typedef OLECLIENTVTBL *LPOLECLIENTVTBL; 233 234 typedef struct _OLECLIENT { 235 LPOLECLIENTVTBL lpvtbl; 236 } OLECLIENT; 237 238 typedef struct _OLESTREAMVTBL { 239 DWORD (CALLBACK *Get) (LPOLESTREAM, void *, DWORD); 240 DWORD (CALLBACK *Put) (LPOLESTREAM, OLE_CONST void *, DWORD); 241 } OLESTREAMVTBL; 242 typedef OLESTREAMVTBL *LPOLESTREAMVTBL; 243 244 typedef struct _OLESTREAM { 245 LPOLESTREAMVTBL lpstbl; 246 } OLESTREAM; 247 248 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 249 OLESTATUS WINAPI OleDelete (LPOLEOBJECT); 250 OLESTATUS WINAPI OleRelease (LPOLEOBJECT); 251 OLESTATUS WINAPI OleSaveToStream (LPOLEOBJECT, LPOLESTREAM); 252 OLESTATUS WINAPI OleEqual (LPOLEOBJECT, LPOLEOBJECT); 253 OLESTATUS WINAPI OleCopyToClipboard (LPOLEOBJECT); 254 OLESTATUS WINAPI OleSetHostNames (LPOLEOBJECT, LPCSTR, LPCSTR); 255 OLESTATUS WINAPI OleSetTargetDevice (LPOLEOBJECT, HGLOBAL); 256 OLESTATUS WINAPI OleSetBounds (LPOLEOBJECT, const RECT *); 257 OLESTATUS WINAPI OleSetColorScheme (LPOLEOBJECT, const LOGPALETTE *); 258 OLESTATUS WINAPI OleQueryBounds (LPOLEOBJECT, RECT *); 259 OLESTATUS WINAPI OleQuerySize (LPOLEOBJECT, DWORD *); 260 OLESTATUS WINAPI OleDraw (LPOLEOBJECT, HDC, const RECT *, const RECT *, HDC); 261 OLESTATUS WINAPI OleQueryOpen (LPOLEOBJECT); 262 OLESTATUS WINAPI OleActivate (LPOLEOBJECT, UINT, WINBOOL, WINBOOL, HWND, const RECT *); 263 OLESTATUS WINAPI OleExecute (LPOLEOBJECT, HGLOBAL, UINT); 264 OLESTATUS WINAPI OleClose (LPOLEOBJECT); 265 OLESTATUS WINAPI OleUpdate (LPOLEOBJECT); 266 OLESTATUS WINAPI OleReconnect (LPOLEOBJECT); 267 OLESTATUS WINAPI OleGetLinkUpdateOptions (LPOLEOBJECT, OLEOPT_UPDATE *); 268 OLESTATUS WINAPI OleSetLinkUpdateOptions (LPOLEOBJECT, OLEOPT_UPDATE); 269 void *WINAPI OleQueryProtocol (LPOLEOBJECT, LPCSTR); 270 OLESTATUS WINAPI OleQueryReleaseStatus (LPOLEOBJECT); 271 OLESTATUS WINAPI OleQueryReleaseError (LPOLEOBJECT); 272 OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod (LPOLEOBJECT); 273 OLESTATUS WINAPI OleQueryType (LPOLEOBJECT, LONG *); 274 DWORD WINAPI OleQueryClientVersion (void); 275 DWORD WINAPI OleQueryServerVersion (void); 276 OLECLIPFORMAT WINAPI OleEnumFormats (LPOLEOBJECT, OLECLIPFORMAT); 277 OLESTATUS WINAPI OleGetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE *); 278 OLESTATUS WINAPI OleSetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE); 279 OLESTATUS WINAPI OleQueryOutOfDate (LPOLEOBJECT); 280 OLESTATUS WINAPI OleRequestData (LPOLEOBJECT, OLECLIPFORMAT); 281 OLESTATUS WINAPI OleQueryLinkFromClip (LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); 282 OLESTATUS WINAPI OleQueryCreateFromClip (LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT); 283 OLESTATUS WINAPI OleCreateFromClip (LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 284 OLESTATUS WINAPI OleCreateLinkFromClip (LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 285 OLESTATUS WINAPI OleCreateFromFile (LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 286 OLESTATUS WINAPI OleCreateLinkFromFile (LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 287 OLESTATUS WINAPI OleLoadFromStream (LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); 288 OLESTATUS WINAPI OleCreate (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 289 OLESTATUS WINAPI OleCreateInvisible (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT, WINBOOL); 290 OLESTATUS WINAPI OleCreateFromTemplate (LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *, OLEOPT_RENDER, OLECLIPFORMAT); 291 OLESTATUS WINAPI OleClone (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); 292 OLESTATUS WINAPI OleCopyFromLink (LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); 293 OLESTATUS WINAPI OleObjectConvert (LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT *); 294 OLESTATUS WINAPI OleRename (LPOLEOBJECT, LPCSTR); 295 OLESTATUS WINAPI OleQueryName (LPOLEOBJECT lpobj, LPSTR lpBuf, UINT *lpcbBuf); 296 OLESTATUS WINAPI OleRevokeObject (LPOLECLIENT); 297 WINBOOL WINAPI OleIsDcMeta (HDC); 298 OLESTATUS WINAPI OleRegisterClientDoc (LPCSTR, LPCSTR, LONG, LHCLIENTDOC *); 299 OLESTATUS WINAPI OleRevokeClientDoc (LHCLIENTDOC); 300 OLESTATUS WINAPI OleRenameClientDoc (LHCLIENTDOC, LPCSTR); 301 OLESTATUS WINAPI OleRevertClientDoc (LHCLIENTDOC); 302 OLESTATUS WINAPI OleSavedClientDoc (LHCLIENTDOC); 303 OLESTATUS WINAPI OleEnumObjects (LHCLIENTDOC, LPOLEOBJECT *); 304 305 typedef enum { 306 OLE_SERVER_MULTI, 307 OLE_SERVER_SINGLE 308 } OLE_SERVER_USE; 309 typedef struct _OLESERVER *LPOLESERVER; 310 311 typedef struct _OLESERVERDOC *LPOLESERVERDOC; 312 313 OLESTATUS WINAPI OleRegisterServer (LPCSTR, LPOLESERVER, LHSERVER *, HINSTANCE, OLE_SERVER_USE); 314 OLESTATUS WINAPI OleRevokeServer (LHSERVER); 315 OLESTATUS WINAPI OleBlockServer (LHSERVER); 316 OLESTATUS WINAPI OleUnblockServer (LHSERVER, WINBOOL *); 317 OLESTATUS WINAPI OleLockServer (LPOLEOBJECT, LHSERVER *); 318 OLESTATUS WINAPI OleUnlockServer (LHSERVER); 319 OLESTATUS WINAPI OleRegisterServerDoc (LHSERVER, LPCSTR, LPOLESERVERDOC, LHSERVERDOC *); 320 OLESTATUS WINAPI OleRevokeServerDoc (LHSERVERDOC); 321 OLESTATUS WINAPI OleRenameServerDoc (LHSERVERDOC, LPCSTR); 322 OLESTATUS WINAPI OleRevertServerDoc (LHSERVERDOC); 323 OLESTATUS WINAPI OleSavedServerDoc (LHSERVERDOC); 324 #endif 325 326 typedef struct _OLESERVERVTBL { 327 OLESTATUS (CALLBACK *Open) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC *); 328 OLESTATUS (CALLBACK *Create) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); 329 OLESTATUS (CALLBACK *CreateFromTemplate) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); 330 OLESTATUS (CALLBACK *Edit) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC *); 331 _Analysis_noreturn_ OLESTATUS (CALLBACK *Exit) (LPOLESERVER); 332 OLESTATUS (CALLBACK *Release) (LPOLESERVER); 333 OLESTATUS (CALLBACK *Execute) (LPOLESERVER, HGLOBAL); 334 } OLESERVERVTBL; 335 typedef OLESERVERVTBL *LPOLESERVERVTBL; 336 337 typedef struct _OLESERVER { 338 LPOLESERVERVTBL lpvtbl; 339 } OLESERVER; 340 341 typedef struct _OLESERVERDOCVTBL { 342 OLESTATUS (CALLBACK *Save) (LPOLESERVERDOC); 343 OLESTATUS (CALLBACK *Close) (LPOLESERVERDOC); 344 OLESTATUS (CALLBACK *SetHostNames) (LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR); 345 OLESTATUS (CALLBACK *SetDocDimensions) (LPOLESERVERDOC, OLE_CONST RECT *); 346 OLESTATUS (CALLBACK *GetObject) (LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT *, LPOLECLIENT); 347 OLESTATUS (CALLBACK *Release) (LPOLESERVERDOC); 348 OLESTATUS (CALLBACK *SetColorScheme) (LPOLESERVERDOC, OLE_CONST LOGPALETTE *); 349 OLESTATUS (CALLBACK *Execute) (LPOLESERVERDOC, HGLOBAL); 350 } OLESERVERDOCVTBL; 351 typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL; 352 353 typedef struct _OLESERVERDOC { 354 LPOLESERVERDOCVTBL lpvtbl; 355 } OLESERVERDOC; 356 357 #ifdef __cplusplus 358 } 359 #endif 360 361 #endif 362