Create rpcrt4.dll.
[wine.git] / include / wtypes.h
blob32e66f53f220a4fcd08a751bf7a8c2d146f04414
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"
10 #include "rpc.h"
13 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
15 typedef CHAR OLECHAR16;
16 typedef WCHAR OLECHAR;
18 typedef LPSTR LPOLESTR16;
19 typedef LPWSTR LPOLESTR;
21 typedef LPCSTR LPCOLESTR16;
22 typedef LPCWSTR LPCOLESTR;
24 typedef OLECHAR16 *BSTR16;
25 typedef OLECHAR *BSTR;
27 typedef BSTR16 *LPBSTR16;
28 typedef BSTR *LPBSTR;
30 #define OLESTR16(x) x
31 #define OLESTR(x) L##x
33 #if defined(__cplusplus) && !defined(CINTERFACE)
34 #define REFGUID const GUID &
35 #define REFCLSID const CLSID &
36 #define REFIID const IID &
37 #define REFFMTID const FMTID &
38 #else /* !defined(__cplusplus) && !defined(CINTERFACE) */
39 #define REFGUID const GUID* const
40 #define REFCLSID const CLSID* const
41 #define REFIID const IID* const
42 #define REFFMTID const FMTID* const
43 #endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
45 extern const IID GUID_NULL;
46 #define IID_NULL GUID_NULL
47 #define CLSID_NULL GUID_NULL
48 #define FMTID_NULL GUID_NULL
50 typedef enum tagDVASPECT
52 DVASPECT_CONTENT = 1,
53 DVASPECT_THUMBNAIL = 2,
54 DVASPECT_ICON = 4,
55 DVASPECT_DOCPRINT = 8
56 } DVASPECT;
58 typedef enum tagSTGC
60 STGC_DEFAULT = 0,
61 STGC_OVERWRITE = 1,
62 STGC_ONLYIFCURRENT = 2,
63 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
64 } STGC;
66 typedef struct _COAUTHIDENTITY
68 USHORT* User;
69 ULONG UserLength;
70 USHORT* Domain;
71 ULONG DomainLength;
72 USHORT* Password;
73 ULONG PasswordLength;
74 ULONG Flags;
75 } COAUTHIDENTITY;
77 typedef struct _COAUTHINFO
79 DWORD dwAuthnSvc;
80 DWORD dwAuthzSvc;
81 LPWSTR pwszServerPrincName;
82 DWORD dwAuthnLevel;
83 DWORD dwImpersonationLevel;
84 COAUTHIDENTITY* pAuthIdentityData;
85 DWORD dwCapabilities;
86 } COAUTHINFO;
88 typedef struct _COSERVERINFO
90 DWORD dwReserved1;
91 LPWSTR pwszName;
92 COAUTHINFO* pAuthInfo;
93 DWORD dwReserved2;
94 } COSERVERINFO;
96 typedef enum tagCLSCTX
98 CLSCTX_INPROC_SERVER = 0x1,
99 CLSCTX_INPROC_HANDLER = 0x2,
100 CLSCTX_LOCAL_SERVER = 0x4,
101 CLSCTX_INPROC_SERVER16 = 0x8,
102 CLSCTX_REMOTE_SERVER = 0x10,
103 CLSCTX_INPROC_HANDLER16 = 0x20,
104 CLSCTX_INPROC_SERVERX86 = 0x40,
105 CLSCTX_INPROC_HANDLERX86 = 0x80
106 } CLSCTX;
108 #define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
109 #define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
110 #define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
112 typedef unsigned short VARTYPE;
114 typedef ULONG PROPID;
116 #ifndef _tagBLOB_DEFINED
117 #define _tagBLOB_DEFINED
118 #define _BLOB_DEFINED
119 #define _LPBLOB_DEFINED
120 typedef struct tagBLOB
122 ULONG cbSize;
123 BYTE *pBlobData;
124 } BLOB, *LPBLOB;
125 #endif
127 #ifndef _tagCY_DEFINED
128 #define _tagCY_DEFINED
130 typedef union tagCY {
131 struct {
132 #ifdef BIG_ENDIAN
133 LONG Hi;
134 LONG Lo;
135 #else /* defined(BIG_ENDIAN) */
136 ULONG Lo;
137 LONG Hi;
138 #endif /* defined(BIG_ENDIAN) */
139 } DUMMYSTRUCTNAME;
140 LONGLONG int64;
141 } CY;
143 #endif /* _tagCY_DEFINED */
146 * 0 == FALSE and -1 == TRUE
148 #define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)
149 #define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
150 typedef short VARIANT_BOOL,_VARIANT_BOOL;
152 typedef struct tagCLIPDATA
154 ULONG cbSize;
155 long ulClipFmt;
156 BYTE *pClipData;
157 } CLIPDATA;
159 /* Macro to calculate the size of the above pClipData */
160 #define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
162 typedef LONG SCODE;
164 #ifndef _FILETIME_
165 #define _FILETIME_
166 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
167 typedef struct
169 DWORD dwLowDateTime;
170 DWORD dwHighDateTime;
171 } FILETIME, *LPFILETIME;
172 #endif /* _FILETIME_ */
174 #ifndef _SECURITY_DEFINED
175 #define _SECURITY_DEFINED
177 typedef struct {
178 BYTE Value[6];
179 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
181 typedef struct _SID {
182 BYTE Revision;
183 BYTE SubAuthorityCount;
184 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
185 DWORD SubAuthority[1];
186 } SID,*PSID;
189 * ACL
192 typedef struct _ACL {
193 BYTE AclRevision;
194 BYTE Sbz1;
195 WORD AclSize;
196 WORD AceCount;
197 WORD Sbz2;
198 } ACL, *PACL;
200 typedef DWORD SECURITY_INFORMATION;
201 typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
202 typedef DWORD ACCESS_MASK, *PACCESS_MASK;
204 typedef PVOID PGENERIC_MAPPING;
206 /* The security descriptor structure */
207 typedef struct {
208 BYTE Revision;
209 BYTE Sbz1;
210 SECURITY_DESCRIPTOR_CONTROL Control;
211 PSID Owner;
212 PSID Group;
213 PACL Sacl;
214 PACL Dacl;
215 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
217 #ifndef _ROTFLAGS_DEFINED
218 #define _ROTFLAGS_DEFINED
219 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
220 #define ROTFLAGS_ALLOWANYCLIENT 0x2
221 #endif /* !defined(_ROTFLAGS_DEFINED) */
223 #endif /* _SECURITY_DEFINED */
226 #endif /* __WINE_WTYPES_H */