Removed the CN_xxx macros since they are not used, do not correspond to
[wine] / include / ole.h
1 /*
2  *      ole.h   -       Declarations for OLESVR and OLECLI
3  */
4
5 #ifndef __WINE_OLE_H
6 #define __WINE_OLE_H
7
8 #include "windows.h"
9
10 typedef CHAR            OLECHAR16;
11 typedef OLECHAR16       *BSTR16;
12 typedef BSTR16          *LPBSTR16;
13 typedef LPSTR           LPOLESTR16;
14 typedef LPCSTR          LPCOLESTR16;
15 typedef WCHAR           OLECHAR32;
16 typedef OLECHAR32       *BSTR32;
17 typedef BSTR32          *LPBSTR32;
18 typedef LPWSTR          LPOLESTR32;
19 typedef LPCWSTR         LPCOLESTR32;
20 DECL_WINELIB_TYPE(OLECHAR)
21 DECL_WINELIB_TYPE(LPOLESTR)
22 DECL_WINELIB_TYPE(LPCOLESTR)
23 DECL_WINELIB_TYPE(BSTR)
24 DECL_WINELIB_TYPE(LPBSTR)
25
26 #define OLESTR16(x) x
27 #define OLESTR32(x) L##x        /* probably wrong */
28 #define OLESTR WINELIB_NAME(OLESTR)
29
30 typedef enum tagCLSCTX
31 {
32     CLSCTX_INPROC_SERVER   = 0x1,
33     CLSCTX_INPROC_HANDLER  = 0x2,
34     CLSCTX_LOCAL_SERVER    = 0x4,
35     CLSCTX_REMOTE_SERVER   = 0x10,
36 } CLSCTX;
37
38 #define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
39 #define CLSCTX_ALL    (CLSCTX_INPROC_HANDLER|CLSCTX_SERVER)
40
41 typedef unsigned short VARTYPE;
42 typedef LONG DISPID;
43
44 /* object types */
45 #define OT_LINK         1
46 #define OT_EMBEDDED     2
47 #define OT_STATIC       3
48
49 /* activate verbs */
50 #define OLEVERB_PRIMARY 0
51
52 typedef enum
53 {
54     OLE_OK,
55     OLE_WAIT_FOR_RELEASE,
56     OLE_BUSY,
57     OLE_ERROR_PROTECT_ONLY,
58     OLE_ERROR_MEMORY,
59     OLE_ERROR_STREAM,
60     OLE_ERROR_STATIC,
61     OLE_ERROR_BLANK,
62     OLE_ERROR_DRAW,
63     OLE_ERROR_METAFILE,
64     OLE_ERROR_ABORT,
65     OLE_ERROR_CLIPBOARD,
66     OLE_ERROR_FORMAT,
67     OLE_ERROR_OBJECT,
68     OLE_ERROR_OPTION,
69     OLE_ERROR_PROTOCOL,
70     OLE_ERROR_ADDRESS,
71     OLE_ERROR_NOT_EQUAL,
72     OLE_ERROR_HANDLE,
73     OLE_ERROR_GENERIC,
74     OLE_ERROR_CLASS,
75     OLE_ERROR_SYNTAX,
76     OLE_ERROR_DATATYPE,
77     OLE_ERROR_PALETTE,
78     OLE_ERROR_NOT_LINK,
79     OLE_ERROR_NOT_EMPTY,
80     OLE_ERROR_SIZE,
81     OLE_ERROR_DRIVE,
82     OLE_ERROR_NETWORK,
83     OLE_ERROR_NAME,
84     OLE_ERROR_TEMPLATE,
85     OLE_ERROR_NEW,
86     OLE_ERROR_EDIT,
87     OLE_ERROR_OPEN,
88     OLE_ERROR_NOT_OPEN,
89     OLE_ERROR_LAUNCH,
90     OLE_ERROR_COMM,
91     OLE_ERROR_TERMINATE,
92     OLE_ERROR_COMMAND,
93     OLE_ERROR_SHOW,
94     OLE_ERROR_DOVERB,
95     OLE_ERROR_ADVISE_NATIVE,
96     OLE_ERROR_ADVISE_PICT,
97     OLE_ERROR_ADVISE_RENAME,
98     OLE_ERROR_POKE_NATIVE,
99     OLE_ERROR_REQUEST_NATIVE,
100     OLE_ERROR_REQUEST_PICT,
101     OLE_ERROR_SERVER_BLOCKED,
102     OLE_ERROR_REGISTRATION,
103     OLE_ERROR_ALREADY_REGISTERED,
104     OLE_ERROR_TASK,
105     OLE_ERROR_OUTOFDATE,
106     OLE_ERROR_CANT_UPDATE_CLIENT,
107     OLE_ERROR_UPDATE,
108     OLE_ERROR_SETDATA_FORMAT,
109     OLE_ERROR_STATIC_FROM_OTHER_OS,
110     OLE_WARN_DELETE_DATA = 1000
111 } OLESTATUS;
112
113 typedef enum {
114         OLE_SERVER_MULTI,
115         OLE_SERVER_SINGLE
116 } OLE_SERVER_USE;
117
118 typedef enum {
119         OLE_CHANGED,
120         OLE_SAVED,
121         OLE_CLOSED,
122         OLE_RENAMED,
123         OLE_QUERY_PAINT,
124         OLE_RELEASE,
125         OLE_QUERY_RETRY
126 } OLE_NOTIFICATION;
127
128 typedef enum {
129         olerender_none,
130         olerender_draw,
131         olerender_format
132 } OLEOPT_RENDER;
133
134 typedef enum {
135         oleupdate_always,
136         oleupdate_onsave,
137         oleupdate_oncall,
138         oleupdate_onclose
139 } OLEOPT_UPDATE;
140
141 typedef LONG    LHSERVER;
142 typedef LONG    LHSERVERDOC;
143 typedef LONG    LHCLIENTDOC;
144 typedef LONG    OLECLIPFORMAT;/* dunno about this type, please change/add */
145 typedef OLEOPT_UPDATE*  LPOLEOPT_UPDATE;
146
147 typedef enum {
148         OLE_NONE,       /* none */
149         OLE_DELETE,     /* delete object */
150         OLE_LNKPASTE,   /* link paste */
151         OLE_EMBPASTE,   /* paste(and update) */
152         OLE_SHOW,
153         OLE_RUN,
154         OLE_ACTIVATE,
155         OLE_UPDATE,
156         OLE_CLOSE,
157         OLE_RECONNECT,
158         OLE_SETUPDATEOPTIONS,
159         OLE_SERVERRUNLAUNCH,    /* unlaunch (terminate?) server */
160         OLE_LOADFROMSTREAM,     /* (auto reconnect) */
161         OLE_SETDATA,            /* OleSetData */
162         OLE_REQUESTDATA,        /* OleRequestData */
163         OLE_OTHER,
164         OLE_CREATE,
165         OLE_CREATEFROMTEMPLATE,
166         OLE_CREATELINKFROMFILE,
167         OLE_COPYFROMLNK,
168         OLE_CREATREFROMFILE,
169         OLE_CREATEINVISIBLE
170 } OLE_RELEASE_METHOD;
171
172 typedef struct _OLETARGETDEVICE {
173         UINT16  otdDeviceNameOffset;
174         UINT16  otdDriverNameOffset;
175         UINT16  otdPortNameOffset;
176         UINT16  otdExtDevmodeOffset;
177         UINT16  otdExtDevmodeSize;
178         UINT16  otdEnvironmentOffset;
179         UINT16  otdEnvironmentSize;
180         BYTE    otdData[1];
181         /* ... */
182 } OLETARGETDEVICE;
183 typedef struct _OLESTREAM* LPOLESTREAM;
184 typedef struct _OLESTREAMVTBL {
185         DWORD   (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD);
186         DWORD   (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD);
187 } OLESTREAMVTBL;
188 typedef OLESTREAMVTBL*  LPOLESTREAMVTBL;
189 typedef struct _OLESTREAM {
190         LPOLESTREAMVTBL lpstbl;
191 } OLESTREAM;
192 typedef struct _OLESERVERDOC*   LPOLESERVERDOC;
193 typedef struct _OLEOBJECT*      LPOLEOBJECT;
194 typedef struct _OLECLIENT*      LPOLECLIENT;
195 typedef struct _OLESERVERDOCVTBL {
196         OLESTATUS       (CALLBACK *Save)(LPOLESERVERDOC);
197         OLESTATUS       (CALLBACK *Close)(LPOLESERVERDOC);
198         OLESTATUS       (CALLBACK *SetHostNames)(LPOLESERVERDOC,LPCOLESTR16,LPCOLESTR16);
199         OLESTATUS       (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
200 #undef GetObject  /* FIXME */
201         OLESTATUS       (CALLBACK *GetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
202         OLESTATUS       (CALLBACK *Release)(LPOLESERVERDOC);
203         OLESTATUS       (CALLBACK *SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
204         OLESTATUS       (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL16);
205 } OLESERVERDOCVTBL;
206 typedef OLESERVERDOCVTBL*       LPOLESERVERDOCVTBL;
207 typedef struct _OLESERVERDOC {
208         LPOLESERVERDOCVTBL      lpvtbl;
209         /* server provided state info */
210 } OLESERVERDOC;
211
212 typedef struct _OLESERVER*      LPOLESERVER;
213 typedef struct _OLESERVERVTBL {
214         OLESTATUS       (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPOLESERVERDOC *);
215         OLESTATUS       (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC*);
216         OLESTATUS       (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
217         OLESTATUS       (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
218         OLESTATUS       (CALLBACK *Exit)(LPOLESERVER);
219         OLESTATUS       (CALLBACK *Release)(LPOLESERVER); 
220         OLESTATUS       (CALLBACK *Execute)(LPOLESERVER); 
221 } OLESERVERVTBL; 
222 typedef OLESERVERVTBL   *LPOLESERVERVTBL;
223 typedef struct _OLESERVER {
224         LPOLESERVERVTBL lpvtbl;
225         /* server specific data */
226 } OLESERVER;
227 typedef struct _OLECLIENTVTBL {
228         int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
229 } OLECLIENTVTBL;
230 typedef OLECLIENTVTBL   *LPOLECLIENTVTBL;
231
232 typedef struct _OLECLIENT {
233         LPOLECLIENTVTBL lpvtbl;
234         /* client data... */
235 } OLECLIENT;
236
237 typedef struct _OLEOBJECTVTBL {
238         void *          (CALLBACK *QueryProtocol)(LPOLEOBJECT,LPCOLESTR16);
239         OLESTATUS       (CALLBACK *Release)(LPOLEOBJECT);
240         OLESTATUS       (CALLBACK *Show)(LPOLEOBJECT,BOOL16);
241         OLESTATUS       (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
242         OLESTATUS       (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
243         OLESTATUS       (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
244         OLESTATUS       (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
245         OLESTATUS       (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16);
246         OLESTATUS       (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
247         OLESTATUS       (CALLBACK *SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
248         OLESTATUS       (CALLBACK *Delete)(LPOLEOBJECT);
249         OLESTATUS       (CALLBACK *SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16);
250         OLESTATUS       (CALLBACK *SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
251         OLESTATUS       (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
252         OLESTATUS       (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
253         OLESTATUS       (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT);
254         OLESTATUS       (CALLBACK *CopyToClipBoard)(LPOLEOBJECT);
255         OLESTATUS       (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
256         OLESTATUS       (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
257         OLESTATUS       (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
258         OLESTATUS       (CALLBACK *Close)(LPOLEOBJECT);
259         OLESTATUS       (CALLBACK *Update)(LPOLEOBJECT);
260         OLESTATUS       (CALLBACK *Reconnect)(LPOLEOBJECT);
261         OLESTATUS       (CALLBACK *ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*);
262         OLESTATUS       (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
263         OLESTATUS       (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
264         OLESTATUS       (CALLBACK *Rename)(LPOLEOBJECT,LPCOLESTR16);
265         OLESTATUS       (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
266         OLESTATUS       (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG);
267         OLESTATUS       (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16);
268         OLESTATUS       (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD);
269         OLESTATUS       (CALLBACK *QueryOpen)(LPOLEOBJECT);
270         OLESTATUS       (CALLBACK *QueryOutOfDate)(LPOLEOBJECT);
271         OLESTATUS       (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT);
272         OLESTATUS       (CALLBACK *QueryReleaseError)(LPOLEOBJECT);
273         OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT);
274         OLESTATUS       (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
275         OLESTATUS       (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
276 } OLEOBJECTVTBL;
277 typedef OLEOBJECTVTBL*  LPOLEOBJECTVTBL;
278
279 typedef struct _OLEOBJECT {
280         LPOLEOBJECTVTBL lpvtbl;
281 } OLEOBJECT;
282
283
284 OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE);
285 OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL16 *);
286 OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
287 OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
288 OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
289 OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
290 OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
291 OLESTATUS WINAPI OleRevokeServer(LHSERVER);
292
293 /* com functions */
294 void WINAPI CoFreeUnusedLibraries(void);
295 HINSTANCE32 WINAPI CoLoadLibrary(LPSTR lpszLibName, BOOL32 bAutoFree);
296 void WINAPI CoFreeUnusedLibraries(void);
297 void WINAPI CoFreeAllLibraries(void);
298
299 typedef enum tagCALLCONV {
300     CC_CDECL            = 1,
301     CC_MSCPASCAL        = CC_CDECL + 1,
302     CC_PASCAL           = CC_MSCPASCAL,
303     CC_MACPASCAL        = CC_PASCAL + 1,
304     CC_STDCALL          = CC_MACPASCAL + 1,
305     CC_RESERVED         = CC_STDCALL + 1,
306     CC_SYSCALL          = CC_RESERVED + 1,
307     CC_MPWCDECL         = CC_SYSCALL + 1,
308     CC_MPWPASCAL        = CC_MPWCDECL + 1,
309     CC_MAX              = CC_MPWPASCAL + 1
310 } CALLCONV;
311
312 typedef struct tagPARAMDATA {
313     OLECHAR16 * szName;    /* parameter name */
314     VARTYPE vt;         /* parameter type */
315 } PARAMDATA, * LPPARAMDATA;
316
317 typedef struct tagMETHODDATA {
318     OLECHAR16 * szName;    /* method name */
319     PARAMDATA * ppdata;  /* pointer to an array of PARAMDATAs */
320     DISPID dispid;      /* method ID */
321     UINT16 iMeth;         /* method index */
322     CALLCONV cc;        /* calling convention */
323     UINT16 cArgs;         /* count of arguments */
324     WORD wFlags;        /* same wFlags as on IDispatch::Invoke() */
325     VARTYPE vtReturn;
326 } METHODDATA, * LPMETHODDATA;
327
328 typedef struct tagINTERFACEDATA {
329     METHODDATA * pmethdata;  /* pointer to an array of METHODDATAs */
330     UINT16 cMembers;      /* count of members */
331 } INTERFACEDATA, * LPINTERFACEDATA;
332
333
334 #endif  /* __WINE_OLE_H */