27#include <winpr/config.h>
28#include <winpr/platform.h>
34#include <winpr/windows.h>
36#include <winpr/spec.h>
44#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
45#define WINPR_C11_ENUM_TYPE(x) : x
50#define WINPR_C11_ENUM_TYPE(x)
53#if defined(_WIN32) || defined(__MINGW32__)
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;
65#if defined(__OBJC__) && defined(__APPLE__)
77WINPR_PRAGMA_DIAG_PUSH WINPR_PRAGMA_DIAG_IGNORED_RESERVED_ID_MACRO
78 WINPR_PRAGMA_DIAG_IGNORED_RESERVED_IDENTIFIER
80#if !defined(_WIN32) && !defined(__MINGW32__)
96 *LPVOID, *PVOID64, *LPVOID64;
104#include <TargetConditionals.h>
110#define OBJC_BOOL_IS_CHAR 1
111typedef signed char BOOL;
119typedef BOOL *PBOOL, *LPBOOL;
133typedef BYTE byte, *PBYTE, *LPBYTE;
134typedef BYTE BOOLEAN, PBOOLEAN;
138typedef unsigned char UCHAR;
142typedef uint8_t UCHAR;
145typedef CHAR CCHAR, *PCHAR, *LPCH, *PCH, *PSTR, *LPSTR;
146typedef const CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR;
147typedef UCHAR* PUCHAR;
149typedef uint16_t WCHAR;
151typedef WCHAR UNICODE, *PWCHAR, *LPWCH, *PWCH, *BSTR, *LMSTR, *LPWSTR, *PWSTR;
152typedef const WCHAR *LPCWCH, *PCWCH, *LMCSTR, *LPCWSTR, *PCWSTR;
154typedef int16_t SHORT, *PSHORT;
156typedef int32_t INT, *PINT, *LPINT;
158typedef int32_t LONG, *PLONG, *LPLONG;
160typedef int64_t LONGLONG, *PLONGLONG;
162typedef uint32_t UINT, *PUINT, *LPUINT;
164typedef uint16_t USHORT, *PUSHORT;
166typedef uint32_t ULONG, *PULONG;
168typedef uint64_t ULONGLONG, *PULONGLONG;
173typedef int16_t INT16;
175typedef int32_t INT32;
177typedef int64_t INT64;
181typedef INT16* PINT16;
182typedef INT32* PINT32;
183typedef INT64* PINT64;
185typedef int32_t LONG32, *PLONG32;
188typedef int64_t LONG64, *PLONG64;
192typedef uint8_t UINT8, *PUINT8;
194typedef uint16_t UINT16, *PUINT16;
196typedef uint32_t UINT32, *PUINT32;
198typedef uint64_t UINT64, *PUINT64;
200typedef uint64_t ULONG64, *PULONG64;
202typedef uint16_t WORD, *PWORD, *LPWORD;
204typedef uint32_t DWORD, DWORD32, *PDWORD, *LPDWORD, *PDWORD32;
206typedef uint64_t DWORD64, DWORDLONG, QWORD, *PDWORD64, *PDWORDLONG, *PQWORD;
208typedef intptr_t INT_PTR, *PINT_PTR;
210typedef uintptr_t UINT_PTR, *PUINT_PTR;
212typedef intptr_t LONG_PTR, *PLONG_PTR;
214typedef uintptr_t ULONG_PTR, *PULONG_PTR;
216typedef uintptr_t DWORD_PTR, *PDWORD_PTR;
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;
228typedef double DOUBLE;
231typedef HANDLE *PHANDLE, *LPHANDLE;
232typedef HANDLE HINSTANCE;
233typedef HANDLE HMODULE;
235typedef HANDLE HBITMAP;
237typedef HANDLE HCURSOR;
238typedef HANDLE HBRUSH;
243typedef ULONG error_status_t;
246typedef SCODE* PSCODE;
248typedef struct s_POINTL
254typedef struct tagSIZE
258}
SIZE, *PSIZE, *LPSIZE;
268} GUID,
UUID, *PGUID, *LPGUID, *LPCGUID;
291typedef LPWSTR LPTSTR;
292typedef LPCWSTR LPCTSTR;
297typedef LPCSTR LPCTSTR;
300typedef union u_ULARGE_INTEGER
317typedef union u_LARGE_INTEGER
334typedef struct s_FILETIME
337 DWORD dwHighDateTime;
340typedef struct s_SYSTEMTIME
352typedef struct s_RPC_SID_IDENTIFIER_AUTHORITY
357typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
359typedef struct s_RPC_SID
362 UCHAR SubAuthorityCount;
364 ULONG SubAuthority[1];
376typedef struct s_SECURITY_DESCRIPTOR
387typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
389typedef struct s_SECURITY_ATTRIBUTES
392 LPVOID lpSecurityDescriptor;
396typedef struct s_PROCESS_INFORMATION
404typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
405typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
407typedef void* FARPROC;
435#define DECIMAL_NEG ((BYTE)0x80)
436#define DECIMAL_SETZERO(dec) \
440 (dec).signscale = 0; \
449typedef void* PCONTEXT_HANDLE;
450typedef PCONTEXT_HANDLE* PPCONTEXT_HANDLE;
453typedef LONG NTSTATUS;
454typedef NTSTATUS* PNTSTATUS;
457#ifndef _LPCVOID_DEFINED
459#define _LPCVOID_DEFINED
461typedef const VOID* LPCVOID;
464#ifndef _LPCBYTE_DEFINED
466#define _LPCBYTE_DEFINED
468typedef const BYTE* LPCBYTE;
472#if defined(_POSIX_SSIZE_MAX)
473#define SSIZE_MAX _POSIX_SSIZE_MAX
475#define SSIZE_MAX _I64_MAX
477#define SSIZE_MAX LONG_MAX
479#define SSIZE_MAX INTPTR_MAX
490#include <winpr/user.h>
496WINPR_ATTR_NODISCARD
static inline int _fseeki64(FILE* fp, INT64 offset,
int origin)
498 return fseeko(fp, offset, origin);
502WINPR_ATTR_NODISCARD
static inline INT64 _ftelli64(FILE* fp)