Small enhancement.
[wine/hacks.git] / include / wtypes.h
blobe4b620a233bf26e7904eb86460dc3be604a086a3
1 /*
2 * Defines the basic types used by COM interfaces.
3 */
5 #ifndef __WINE_WTYPES_H
6 #define __WINE_WTYPES_H
9 #include "windef.h"
11 /* FIXME: this line should be in rpcndr.h */
12 typedef unsigned char byte;
14 /* FIXME: and the following group should be in rpcdce.h */
15 typedef void* RPC_AUTH_IDENTITY_HANDLE;
16 typedef void* RPC_AUTHZ_HANDLE;
19 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
21 typedef CHAR OLECHAR16;
22 typedef WCHAR OLECHAR;
24 typedef LPSTR LPOLESTR16;
25 typedef LPWSTR LPOLESTR;
27 typedef LPCSTR LPCOLESTR16;
28 typedef LPCWSTR LPCOLESTR;
30 typedef OLECHAR16 *BSTR16;
31 typedef OLECHAR *BSTR;
33 typedef BSTR16 *LPBSTR16;
34 typedef BSTR *LPBSTR;
36 #define OLESTR16(x) x
37 #define OLESTR(x) L##x
39 #ifndef GUID_DEFINED
40 #define GUID_DEFINED
41 typedef struct _GUID
43 DWORD Data1;
44 WORD Data2;
45 WORD Data3;
46 BYTE Data4[8];
47 } GUID;
48 #endif
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
66 extern const IID GUID_NULL;
67 #define CLSID_NULL GUID_NULL
69 typedef enum tagDVASPECT
71 DVASPECT_CONTENT = 1,
72 DVASPECT_THUMBNAIL = 2,
73 DVASPECT_ICON = 4,
74 DVASPECT_DOCPRINT = 8
75 } DVASPECT;
77 typedef enum tagSTGC
79 STGC_DEFAULT = 0,
80 STGC_OVERWRITE = 1,
81 STGC_ONLYIFCURRENT = 2,
82 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
83 } STGC;
85 typedef struct _COAUTHIDENTITY
87 USHORT* User;
88 ULONG UserLength;
89 USHORT* Domain;
90 ULONG DomainLength;
91 USHORT* Password;
92 ULONG PasswordLength;
93 ULONG Flags;
94 } COAUTHIDENTITY;
96 typedef struct _COAUTHINFO
98 DWORD dwAuthnSvc;
99 DWORD dwAuthzSvc;
100 LPWSTR pwszServerPrincName;
101 DWORD dwAuthnLevel;
102 DWORD dwImpersonationLevel;
103 COAUTHIDENTITY* pAuthIdentityData;
104 DWORD dwCapabilities;
105 } COAUTHINFO;
107 typedef struct _COSERVERINFO
109 DWORD dwReserved1;
110 LPWSTR pwszName;
111 COAUTHINFO* pAuthInfo;
112 DWORD dwReserved2;
113 } COSERVERINFO;
115 typedef enum tagCLSCTX
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;
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)
131 typedef unsigned short VARTYPE;
133 typedef ULONG PROPID;
135 typedef struct tagBLOB
137 ULONG cbSize;
138 BYTE *pBlobData;
139 } BLOB;
141 #ifndef _tagCY_DEFINED
142 #define _tagCY_DEFINED
143 typedef union tagCY
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 */
159 * 0 == FALSE and -1 == TRUE
161 #define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)
162 #define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
163 typedef short VARIANT_BOOL,_VARIANT_BOOL;
165 typedef struct tagCLIPDATA
167 ULONG cbSize;
168 long ulClipFmt;
169 BYTE *pClipData;
170 } CLIPDATA;
172 // Macro to calculate the size of the above pClipData
173 #define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
175 typedef LONG SCODE;
177 #ifndef _FILETIME_
178 #define _FILETIME_
179 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
180 typedef struct
182 DWORD dwLowDateTime;
183 DWORD dwHighDateTime;
184 } FILETIME, *LPFILETIME;
185 #endif /* _FILETIME_ */
187 #ifndef _SECURITY_DEFINED
188 #define _SECURITY_DEFINED
190 typedef struct {
191 BYTE Value[6];
192 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
194 typedef struct _SID {
195 BYTE Revision;
196 BYTE SubAuthorityCount;
197 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
198 DWORD SubAuthority[1];
199 } SID,*PSID;
202 * ACL
205 typedef struct _ACL {
206 BYTE AclRevision;
207 BYTE Sbz1;
208 WORD AclSize;
209 WORD AceCount;
210 WORD Sbz2;
211 } ACL, *PACL;
213 typedef DWORD SECURITY_INFORMATION;
214 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
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;
227 #ifndef _ROTFLAGS_DEFINED
228 #define _ROTFLAGS_DEFINED
229 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
230 #define ROTFLAGS_ALLOWANYCLIENT 0x2
231 #endif // !_ROTFLAGS_DEFINED
233 #endif /* _SECURITY_DEFINED */
236 #endif /* __WINE_WTYPES_H */