Added missing ReadClassStg prototype.
[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 "windef.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 #define OLESTR16(x) x
37 #define OLESTR(x) L##x
38
39 #ifndef GUID_DEFINED
40 #define GUID_DEFINED
41 typedef struct _GUID
42 {
43     DWORD Data1;
44     WORD  Data2;
45     WORD  Data3;
46     BYTE  Data4[8];
47 } GUID;
48 #endif
49
50 typedef GUID  *LPGUID;
51 typedef GUID  CLSID,*LPCLSID;
52 typedef GUID    IID,*LPIID;
53 typedef GUID    FMTID,*LPFMTID;
54 #ifdef __cplusplus
55 #define REFGUID             const GUID &
56 #define REFCLSID            const CLSID &
57 #define REFIID              const IID &
58 #define REFFMTID            const FMTID &
59 #else // !__cplusplus
60 #define REFGUID             const GUID* const
61 #define REFCLSID            const CLSID* const
62 #define REFIID              const IID* const
63 #define REFFMTID            const FMTID* const
64 #endif // !__cplusplus
65
66 extern const IID GUID_NULL;
67 #define CLSID_NULL GUID_NULL
68    
69 typedef enum tagDVASPECT
70
71        DVASPECT_CONTENT   = 1,
72        DVASPECT_THUMBNAIL = 2,
73        DVASPECT_ICON      = 4,   
74        DVASPECT_DOCPRINT  = 8
75 } DVASPECT;
76
77 typedef enum tagSTGC
78 {
79         STGC_DEFAULT = 0,
80         STGC_OVERWRITE = 1,
81         STGC_ONLYIFCURRENT = 2,
82         STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
83 } STGC;
84
85 typedef struct _COAUTHIDENTITY
86 {
87     USHORT* User;
88     ULONG UserLength;
89     USHORT* Domain;
90     ULONG DomainLength;
91     USHORT* Password;
92     ULONG PasswordLength;
93     ULONG Flags;
94 } COAUTHIDENTITY;
95
96 typedef struct _COAUTHINFO
97 {
98     DWORD dwAuthnSvc;
99     DWORD dwAuthzSvc;
100     LPWSTR pwszServerPrincName;
101     DWORD dwAuthnLevel;
102     DWORD dwImpersonationLevel;
103     COAUTHIDENTITY* pAuthIdentityData;
104     DWORD dwCapabilities;
105 } COAUTHINFO;
106
107 typedef struct _COSERVERINFO
108 {
109     DWORD dwReserved1;
110     LPWSTR pwszName;
111     COAUTHINFO* pAuthInfo;
112     DWORD dwReserved2;
113 } COSERVERINFO;
114
115 typedef enum tagCLSCTX
116 {
117     CLSCTX_INPROC_SERVER     = 0x1,
118     CLSCTX_INPROC_HANDLER    = 0x2,
119     CLSCTX_LOCAL_SERVER      = 0x4,
120     CLSCTX_INPROC_SERVER16   = 0x8,
121     CLSCTX_REMOTE_SERVER     = 0x10,
122     CLSCTX_INPROC_HANDLER16  = 0x20,
123     CLSCTX_INPROC_SERVERX86  = 0x40,
124     CLSCTX_INPROC_HANDLERX86 = 0x80
125 } CLSCTX;
126
127 #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
128 #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
129 #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
130
131 typedef unsigned short VARTYPE;
132
133 typedef ULONG PROPID;
134
135 typedef struct tagBLOB
136 {
137     ULONG cbSize;
138     BYTE *pBlobData;
139 } BLOB;
140
141 #ifndef _tagCY_DEFINED
142 #define _tagCY_DEFINED
143 typedef union tagCY
144 {
145     struct {
146 #ifdef BIG_ENDIAN
147         long Hi;
148         long Lo;
149 #else
150         unsigned long Lo;
151         long Hi;
152 #endif
153     } u;
154     LONGLONG int64;
155 } CY;
156 #endif /* _tagCY_DEFINED */
157
158 /*
159  * 0 == FALSE and -1 == TRUE
160  */
161 #define VARIANT_TRUE     ((VARIANT_BOOL)0xFFFF)
162 #define VARIANT_FALSE    ((VARIANT_BOOL)0x0000)
163 typedef short VARIANT_BOOL,_VARIANT_BOOL;
164
165 typedef struct tagCLIPDATA
166 {
167     ULONG cbSize;
168     long ulClipFmt;
169     BYTE *pClipData;
170 } CLIPDATA;
171
172 // Macro to calculate the size of the above pClipData
173 #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
174
175 typedef LONG SCODE;
176
177 #ifndef _FILETIME_
178 #define _FILETIME_
179 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
180 typedef struct
181 {
182   DWORD  dwLowDateTime;
183   DWORD  dwHighDateTime;
184 } FILETIME, *LPFILETIME;
185 #endif /* _FILETIME_ */
186
187 #ifndef _SECURITY_DEFINED
188 #define _SECURITY_DEFINED
189
190 typedef struct {
191     BYTE Value[6];
192 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
193
194 typedef struct _SID {
195     BYTE Revision;
196     BYTE SubAuthorityCount;
197     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
198     DWORD SubAuthority[1];
199 } SID,*PSID;
200
201 /*
202  * ACL 
203  */
204
205 typedef struct _ACL {
206     BYTE AclRevision;
207     BYTE Sbz1;
208     WORD AclSize;
209     WORD AceCount;
210     WORD Sbz2;
211 } ACL, *PACL;
212
213 typedef DWORD SECURITY_INFORMATION;
214 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
215
216 /* The security descriptor structure */
217 typedef struct {
218     BYTE Revision;
219     BYTE Sbz1;
220     SECURITY_DESCRIPTOR_CONTROL Control;
221     PSID Owner;
222     PSID Group;
223     PACL Sacl;
224     PACL Dacl;
225 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
226
227 #ifndef _ROTFLAGS_DEFINED
228 #define _ROTFLAGS_DEFINED
229 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
230 #define ROTFLAGS_ALLOWANYCLIENT 0x2
231 #endif // !_ROTFLAGS_DEFINED
232
233 #endif /* _SECURITY_DEFINED */
234
235
236 #endif /* __WINE_WTYPES_H */