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