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