FreeRDP
Loading...
Searching...
No Matches
wtypes.h
1
22#ifndef WINPR_WTYPES_H
23#define WINPR_WTYPES_H
24
25#include <assert.h>
26
27#include <winpr/config.h>
28#include <winpr/platform.h>
29
30/* MSDN: Windows Data Types - http://msdn.microsoft.com/en-us/library/aa383751/ */
31/* [MS-DTYP]: Windows Data Types - http://msdn.microsoft.com/en-us/library/cc230273/ */
32
33#include <wchar.h>
34#include <winpr/windows.h>
35
36#include <winpr/spec.h>
37
38#include <stdbool.h>
39#include <stdint.h>
40#include <inttypes.h>
41
42#include <limits.h>
43
44#if defined(_WIN32) || defined(__MINGW32__)
45#include <wtypes.h>
46
47/* Handle missing ssize_t on Windows */
48#if defined(WINPR_HAVE_SSIZE_T)
49typedef ssize_t SSIZE_T;
50#elif !defined(WINPR_HAVE_WIN_SSIZE_T)
51typedef intptr_t SSIZE_T;
52#endif
53
54#endif
55
56#if defined(__OBJC__) && defined(__APPLE__)
57#include <objc/objc.h>
58#endif
59
60#ifndef CONST
61#define CONST const
62#endif
63
64#ifndef VOID
65#define VOID void
66#endif
67
68WINPR_PRAGMA_DIAG_PUSH WINPR_PRAGMA_DIAG_IGNORED_RESERVED_ID_MACRO
69 WINPR_PRAGMA_DIAG_IGNORED_RESERVED_IDENTIFIER
70
71#if !defined(_WIN32) && !defined(__MINGW32__)
72
73#define CALLBACK
74
75#define WINAPI
76#define CDECL
77
78#ifndef FAR
79#define FAR
80#endif
81
82#ifndef NEAR
83#define NEAR
84#endif
85
86 typedef void *PVOID,
87 *LPVOID, *PVOID64, *LPVOID64;
88
89#ifndef XMD_H /* X11/Xmd.h typedef collision with BOOL */
90#ifndef __OBJC__ /* objc.h typedef collision with BOOL */
91#ifndef __APPLE__
92typedef int32_t BOOL;
93
94#else /* __APPLE__ */
95#include <TargetConditionals.h>
96
97/* ensure compatibility with objc libraries */
98#if OBJC_BOOL_IS_BOOL
99typedef bool BOOL;
100#else
101#define OBJC_BOOL_IS_CHAR 1
102typedef signed char BOOL;
103// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
104// even if -funsigned-char is used.
105#endif
106#endif /* __APPLE__ */
107#endif /* __OBJC__ */
108#endif /* XMD_H */
109
110typedef BOOL *PBOOL, *LPBOOL;
111
112#ifndef FALSE
113#define FALSE false
114#endif
115
116#ifndef TRUE
117#define TRUE true
118#endif
119
120#ifndef XMD_H /* X11/Xmd.h typedef collision with BYTE */
121typedef uint8_t BYTE;
122
123#endif /* XMD_H */
124typedef BYTE byte, *PBYTE, *LPBYTE;
125typedef BYTE BOOLEAN, PBOOLEAN;
126
127#if CHAR_BIT == 8
128typedef char CHAR;
129typedef unsigned char UCHAR;
130#else
131typedef int8_t CHAR;
132
133typedef uint8_t UCHAR;
134
135#endif
136typedef CHAR CCHAR, *PCHAR, *LPCH, *PCH, *PSTR, *LPSTR;
137typedef const CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR;
138typedef UCHAR* PUCHAR;
139
140typedef uint16_t WCHAR;
141
142typedef WCHAR UNICODE, *PWCHAR, *LPWCH, *PWCH, *BSTR, *LMSTR, *LPWSTR, *PWSTR;
143typedef const WCHAR *LPCWCH, *PCWCH, *LMCSTR, *LPCWSTR, *PCWSTR;
144
145typedef int16_t SHORT, *PSHORT;
146
147typedef int32_t INT, *PINT, *LPINT;
148
149typedef int32_t LONG, *PLONG, *LPLONG;
150
151typedef int64_t LONGLONG, *PLONGLONG;
152
153typedef uint32_t UINT, *PUINT, *LPUINT;
154
155typedef uint16_t USHORT, *PUSHORT;
156
157typedef uint32_t ULONG, *PULONG;
158
159typedef uint64_t ULONGLONG, *PULONGLONG;
160
161#ifndef XMD_H /* X11/Xmd.h typedef collisions */
162typedef int8_t INT8;
163
164typedef int16_t INT16;
165
166typedef int32_t INT32;
167
168typedef int64_t INT64;
169
170#endif
171typedef INT8* PINT8;
172typedef INT16* PINT16;
173typedef INT32* PINT32;
174typedef INT64* PINT64;
175
176typedef int32_t LONG32, *PLONG32;
177
178#ifndef LONG64 /* X11/Xmd.h uses/defines LONG64 */
179typedef int64_t LONG64, *PLONG64;
180
181#endif
182
183typedef uint8_t UINT8, *PUINT8;
184
185typedef uint16_t UINT16, *PUINT16;
186
187typedef uint32_t UINT32, *PUINT32;
188
189typedef uint64_t UINT64, *PUINT64;
190
191typedef uint64_t ULONG64, *PULONG64;
192
193typedef uint16_t WORD, *PWORD, *LPWORD;
194
195typedef uint32_t DWORD, DWORD32, *PDWORD, *LPDWORD, *PDWORD32;
196
197typedef uint64_t DWORD64, DWORDLONG, QWORD, *PDWORD64, *PDWORDLONG, *PQWORD;
198
199typedef intptr_t INT_PTR, *PINT_PTR;
200
201typedef uintptr_t UINT_PTR, *PUINT_PTR;
202
203typedef intptr_t LONG_PTR, *PLONG_PTR;
204
205typedef uintptr_t ULONG_PTR, *PULONG_PTR;
206
207typedef uintptr_t DWORD_PTR, *PDWORD_PTR;
208
209typedef ULONG_PTR SIZE_T, *PSIZE_T;
210#if defined(WINPR_HAVE_SSIZE_T)
211#include <sys/types.h>
212typedef ssize_t SSIZE_T;
213#elif !defined(WINPR_HAVE_WIN_SSIZE_T)
214typedef LONG_PTR SSIZE_T;
215#endif
216
217typedef float FLOAT;
218
219typedef double DOUBLE;
220
221typedef void* HANDLE;
222typedef HANDLE *PHANDLE, *LPHANDLE;
223typedef HANDLE HINSTANCE;
224typedef HANDLE HMODULE;
225typedef HANDLE HWND;
226typedef HANDLE HBITMAP;
227typedef HANDLE HICON;
228typedef HANDLE HCURSOR;
229typedef HANDLE HBRUSH;
230typedef HANDLE HMENU;
231
232typedef DWORD HCALL;
233
234typedef ULONG error_status_t;
235typedef LONG HRESULT;
236typedef LONG SCODE;
237typedef SCODE* PSCODE;
238
239typedef struct s_POINTL /* ptl */
240{
241 LONG x;
242 LONG y;
243} POINTL, *PPOINTL;
244
245typedef struct tagSIZE
246{
247 LONG cx;
248 LONG cy;
249} SIZE, *PSIZE, *LPSIZE;
250
251typedef SIZE SIZEL;
252
253typedef struct s_GUID
254{
255 UINT32 Data1;
256 UINT16 Data2;
257 UINT16 Data3;
258 BYTE Data4[8];
259} GUID, UUID, *PGUID, *LPGUID, *LPCGUID;
260typedef GUID CLSID;
261
262typedef struct s_LUID
263{
264 DWORD LowPart;
265 LONG HighPart;
266} LUID, *PLUID;
267
268typedef GUID IID;
269typedef IID* REFIID;
270
271#ifdef UNICODE
272#define _T(x) u##x // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
273
274#else
275#define _T(x) x // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
276
277#endif
278
279#ifdef UNICODE
280typedef LPWSTR PTSTR;
281typedef LPWSTR LPTCH;
282typedef LPWSTR LPTSTR;
283typedef LPCWSTR LPCTSTR;
284#else
285typedef LPSTR PTSTR;
286typedef LPSTR LPTCH;
287typedef LPSTR LPTSTR;
288typedef LPCSTR LPCTSTR;
289#endif
290
291typedef union u_ULARGE_INTEGER
292{
293 struct
294 {
295 DWORD LowPart;
296 DWORD HighPart;
297 } DUMMYSTRUCTNAME;
298
299 struct
300 {
301 DWORD LowPart;
302 DWORD HighPart;
303 } u;
304
305 ULONGLONG QuadPart;
306} ULARGE_INTEGER, *PULARGE_INTEGER;
307
308typedef union u_LARGE_INTEGER
309{
310 struct
311 {
312 DWORD LowPart;
313 LONG HighPart;
314 } DUMMYSTRUCTNAME;
315
316 struct
317 {
318 DWORD LowPart;
319 LONG HighPart;
320 } u;
321
322 LONGLONG QuadPart;
323} LARGE_INTEGER, *PLARGE_INTEGER;
324
325typedef struct s_FILETIME
326{
327 DWORD dwLowDateTime;
328 DWORD dwHighDateTime;
329} FILETIME, *PFILETIME, *LPFILETIME;
330
331typedef struct s_SYSTEMTIME
332{
333 WORD wYear;
334 WORD wMonth;
335 WORD wDayOfWeek;
336 WORD wDay;
337 WORD wHour;
338 WORD wMinute;
339 WORD wSecond;
340 WORD wMilliseconds;
341} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
342
343typedef struct s_RPC_SID_IDENTIFIER_AUTHORITY
344{
345 BYTE Value[6];
347
348typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
349
350typedef struct s_RPC_SID
351{
352 UCHAR Revision;
353 UCHAR SubAuthorityCount;
354 RPC_SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
355 ULONG SubAuthority[1];
356} RPC_SID, *PRPC_SID, *PSID;
357
358typedef struct s_ACL
359{
360 UCHAR AclRevision;
361 UCHAR Sbz1;
362 USHORT AclSize;
363 USHORT AceCount;
364 USHORT Sbz2;
365} ACL, *PACL;
366
367typedef struct s_SECURITY_DESCRIPTOR
368{
369 UCHAR Revision;
370 UCHAR Sbz1;
371 USHORT Control;
372 PSID Owner;
373 PSID Group;
374 PACL Sacl;
375 PACL Dacl;
376} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
377
378typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
379
380typedef struct s_SECURITY_ATTRIBUTES
381{
382 DWORD nLength;
383 LPVOID lpSecurityDescriptor;
384 BOOL bInheritHandle;
385} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
386
387typedef struct s_PROCESS_INFORMATION
388{
389 HANDLE hProcess;
390 HANDLE hThread;
391 DWORD dwProcessId;
392 DWORD dwThreadId;
393} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
394
395typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
396typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
397
398typedef void* FARPROC;
399
400typedef struct tagDEC
401{
402 USHORT wReserved;
403 union
404 {
405 struct
406 {
407 BYTE scale;
408 BYTE sign;
409 } DUMMYSTRUCTNAME;
410 USHORT signscale;
411 } DUMMYUNIONNAME;
412 ULONG Hi32;
413 union
414 {
415 struct
416 {
417 ULONG Lo32;
418 ULONG Mid32;
419 } DUMMYSTRUCTNAME2;
420 ULONGLONG Lo64;
421 } DUMMYUNIONNAME2;
422} DECIMAL;
423
424typedef DECIMAL* LPDECIMAL;
425
426#define DECIMAL_NEG ((BYTE)0x80)
427#define DECIMAL_SETZERO(dec) \
428 { \
429 (dec).Lo64 = 0; \
430 (dec).Hi32 = 0; \
431 (dec).signscale = 0; \
432 }
433
434typedef DWORD LCID;
435typedef PDWORD PLCID;
436typedef WORD LANGID;
437
438#endif /* _WIN32 not defined */
439
440typedef void* PCONTEXT_HANDLE;
441typedef PCONTEXT_HANDLE* PPCONTEXT_HANDLE;
442
443#ifndef _NTDEF
444typedef LONG NTSTATUS;
445typedef NTSTATUS* PNTSTATUS;
446#endif
447
448#ifndef _LPCVOID_DEFINED // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
449
450#define _LPCVOID_DEFINED // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
451
452typedef const VOID* LPCVOID;
453#endif
454
455#ifndef _LPCBYTE_DEFINED // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
456
457#define _LPCBYTE_DEFINED // NOLINT(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
458
459typedef const BYTE* LPCBYTE;
460#endif
461
462#ifndef SSIZE_MAX
463#if defined(_POSIX_SSIZE_MAX)
464#define SSIZE_MAX _POSIX_SSIZE_MAX
465#elif defined(_WIN64)
466#define SSIZE_MAX _I64_MAX
467#elif defined(_WIN32)
468#define SSIZE_MAX LONG_MAX
469#else
470#define SSIZE_MAX INTPTR_MAX
471#endif
472#endif
473
474#define PRIdz "zd"
475#define PRIiz "zi"
476#define PRIuz "zu"
477#define PRIoz "zo"
478#define PRIxz "zx"
479#define PRIXz "zX"
480
481#include <winpr/user.h>
482
483#ifndef _WIN32
484#include <stdio.h>
485
486// NOLINTNEXTLINE(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
487static inline int _fseeki64(FILE* fp, INT64 offset, int origin)
488{
489 return fseeko(fp, offset, origin);
490}
491
492// NOLINTNEXTLINE(bugprone-reserved-identifier,cert-dcl37-c,cert-dcl51-cpp)
493static inline INT64 _ftelli64(FILE* fp)
494{
495 return ftello(fp);
496}
497#endif
498
499WINPR_PRAGMA_DIAG_POP
500
501#endif /* WINPR_WTYPES_H */
Definition wtypes.h:359
Definition wtypes.h:263
Definition wtypes.h:246
Definition wtypes.h:254