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