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