Added prototypes for OleQueryLinkFromClip, OleQueryCreateFromClip,
[wine] / include / wtypes.h
1 /*
2  * Defines the basic types used by COM interfaces.
3  */
4
5 #ifndef __WINE_WTYPES_H
6 #define __WINE_WTYPES_H
7
8
9 #include "wintypes.h"
10
11 /* FIXME: this line should be in rpcndr.h */
12 typedef unsigned char byte;
13
14 /* FIXME: and the following group should be in rpcdce.h */
15 typedef void* RPC_AUTH_IDENTITY_HANDLE;
16 typedef void* RPC_AUTHZ_HANDLE;
17
18
19 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
20
21 typedef CHAR            OLECHAR16;
22 typedef WCHAR           OLECHAR;
23
24 typedef LPSTR           LPOLESTR16;
25 typedef LPWSTR          LPOLESTR;
26
27 typedef LPCSTR          LPCOLESTR16;
28 typedef LPCWSTR         LPCOLESTR;
29
30 typedef OLECHAR16       *BSTR16;
31 typedef OLECHAR *BSTR;
32
33 typedef BSTR16          *LPBSTR16;
34 typedef BSTR            *LPBSTR;
35
36 #ifndef GUID_DEFINED
37 #define GUID_DEFINED
38 typedef struct _GUID
39 {
40     DWORD Data1;
41     WORD  Data2;
42     WORD  Data3;
43     BYTE  Data4[8];
44 } GUID;
45 #endif
46
47 typedef GUID  *LPGUID;
48 typedef GUID  CLSID,*LPCLSID;
49 typedef GUID    IID,*LPIID;
50 typedef GUID    FMTID,*LPFMTID;
51 #ifdef __cplusplus
52 #define REFGUID             const GUID &
53 #define REFCLSID            const CLSID &
54 #define REFIID              const IID &
55 #define REFFMTID            const FMTID &
56 #else // !__cplusplus
57 #define REFGUID             const GUID* const
58 #define REFCLSID            const CLSID* const
59 #define REFIID              const IID* const
60 #define REFFMTID            const FMTID* const
61 #endif // !__cplusplus
62
63 #define GUID_NULL  ((GUID*)NULL) /* Is this right? */
64 #define CLSID_NULL ((REFCLSID)NULL)
65    
66 typedef enum tagDVASPECT
67
68        DVASPECT_CONTENT   = 1,
69        DVASPECT_THUMBNAIL = 2,
70        DVASPECT_ICON      = 4,   
71        DVASPECT_DOCPRINT  = 8
72 } DVASPECT;
73
74 #define DECLARE_HANDLE(a)  typedef HANDLE16 a##16; typedef HANDLE a
75 DECLARE_HANDLE(HMETAFILEPICT);
76 #undef DECLARE_HANDLE
77
78 typedef struct _COAUTHIDENTITY
79 {
80     USHORT* User;
81     ULONG UserLength;
82     USHORT* Domain;
83     ULONG DomainLength;
84     USHORT* Password;
85     ULONG PasswordLength;
86     ULONG Flags;
87 } COAUTHIDENTITY;
88
89 typedef struct _COAUTHINFO
90 {
91     DWORD dwAuthnSvc;
92     DWORD dwAuthzSvc;
93     LPWSTR pwszServerPrincName;
94     DWORD dwAuthnLevel;
95     DWORD dwImpersonationLevel;
96     COAUTHIDENTITY* pAuthIdentityData;
97     DWORD dwCapabilities;
98 } COAUTHINFO;
99
100 typedef struct _COSERVERINFO
101 {
102     DWORD dwReserved1;
103     LPWSTR pwszName;
104     COAUTHINFO* pAuthInfo;
105     DWORD dwReserved2;
106 } COSERVERINFO;
107
108 typedef enum tagCLSCTX
109 {
110     CLSCTX_INPROC_SERVER     = 0x1,
111     CLSCTX_INPROC_HANDLER    = 0x2,
112     CLSCTX_LOCAL_SERVER      = 0x4,
113     CLSCTX_INPROC_SERVER16   = 0x8,
114     CLSCTX_REMOTE_SERVER     = 0x10,
115     CLSCTX_INPROC_HANDLER16  = 0x20,
116     CLSCTX_INPROC_SERVERX86  = 0x40,
117     CLSCTX_INPROC_HANDLERX86 = 0x80
118 } CLSCTX;
119
120 #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
121 #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
122 #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
123
124 typedef unsigned short VARTYPE;
125
126 typedef ULONG PROPID;
127
128 typedef struct tagBLOB
129 {
130     ULONG cbSize;
131     BYTE *pBlobData;
132 } BLOB;
133
134 #ifndef _tagCY_DEFINED
135 #define _tagCY_DEFINED
136 typedef union tagCY
137 {
138     struct {
139 #ifdef BIG_ENDIAN
140         long Hi;
141         long Lo;
142 #else
143         unsigned long Lo;
144         long Hi;
145 #endif
146     } u;
147     LONGLONG int64;
148 } CY;
149 #endif /* _tagCY_DEFINED */
150
151 /*
152  * 0 == FALSE and -1 == TRUE
153  */
154 #define VARIANT_TRUE     ((VARIANT_BOOL)0xFFFF)
155 #define VARIANT_FALSE    ((VARIANT_BOOL)0x0000)
156 typedef short VARIANT_BOOL,_VARIANT_BOOL;
157
158 typedef struct tagCLIPDATA
159 {
160     ULONG cbSize;
161     long ulClipFmt;
162     BYTE *pClipData;
163 } CLIPDATA;
164
165 // Macro to calculate the size of the above pClipData
166 #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
167
168 typedef LONG SCODE;
169
170 #ifndef _FILETIME_
171 #define _FILETIME_
172 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
173 typedef struct
174 {
175   DWORD  dwLowDateTime;
176   DWORD  dwHighDateTime;
177 } FILETIME, *LPFILETIME;
178 #endif /* _FILETIME_ */
179
180 #ifndef _SECURITY_DEFINED
181 #define _SECURITY_DEFINED
182
183 typedef struct {
184     BYTE Value[6];
185 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
186
187 typedef struct _SID {
188     BYTE Revision;
189     BYTE SubAuthorityCount;
190     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
191     DWORD SubAuthority[1];
192 } SID,*PSID;
193
194 /*
195  * ACL 
196  */
197
198 typedef struct _ACL {
199     BYTE AclRevision;
200     BYTE Sbz1;
201     WORD AclSize;
202     WORD AceCount;
203     WORD Sbz2;
204 } ACL, *PACL;
205
206 typedef DWORD SECURITY_INFORMATION;
207 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
208
209 /* The security descriptor structure */
210 typedef struct {
211     BYTE Revision;
212     BYTE Sbz1;
213     SECURITY_DESCRIPTOR_CONTROL Control;
214     PSID Owner;
215     PSID Group;
216     PACL Sacl;
217     PACL Dacl;
218 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
219
220 #endif /* _SECURITY_DEFINED */
221
222
223 #endif /* __WINE_WTYPES_H */