27#include <winpr/config.h>
28#include <winpr/platform.h>
34#include <winpr/windows.h>
36#include <winpr/spec.h>
44#if defined(_WIN32) || defined(__MINGW32__)
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;
56#if defined(__OBJC__) && defined(__APPLE__)
68WINPR_PRAGMA_DIAG_PUSH WINPR_PRAGMA_DIAG_IGNORED_RESERVED_ID_MACRO
69 WINPR_PRAGMA_DIAG_IGNORED_RESERVED_IDENTIFIER
71#if !defined(_WIN32) && !defined(__MINGW32__)
87 *LPVOID, *PVOID64, *LPVOID64;
95#include <TargetConditionals.h>
98#if (defined(TARGET_OS_IPHONE) && (TARGET_OS_IPHONE != 0) && defined(__LP64__)) || \
99 (defined(TARGET_OS_WATCH) && (TARGET_OS_WATCH != 0))
102typedef signed char BOOL;
108typedef BOOL *PBOOL, *LPBOOL;
122typedef BYTE byte, *PBYTE, *LPBYTE;
123typedef BYTE BOOLEAN, PBOOLEAN;
127typedef unsigned char UCHAR;
131typedef uint8_t UCHAR;
134typedef CHAR CCHAR, *PCHAR, *LPCH, *PCH, *PSTR, *LPSTR;
135typedef const CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR;
136typedef UCHAR* PUCHAR;
138typedef uint16_t WCHAR;
140typedef WCHAR UNICODE, *PWCHAR, *LPWCH, *PWCH, *BSTR, *LMSTR, *LPWSTR, *PWSTR;
141typedef const WCHAR *LPCWCH, *PCWCH, *LMCSTR, *LPCWSTR, *PCWSTR;
143typedef int16_t SHORT, *PSHORT;
145typedef int32_t INT, *PINT, *LPINT;
147typedef int32_t LONG, *PLONG, *LPLONG;
149typedef int64_t LONGLONG, *PLONGLONG;
151typedef uint32_t UINT, *PUINT, *LPUINT;
153typedef uint16_t USHORT, *PUSHORT;
155typedef uint32_t ULONG, *PULONG;
157typedef uint64_t ULONGLONG, *PULONGLONG;
162typedef int16_t INT16;
164typedef int32_t INT32;
166typedef int64_t INT64;
170typedef INT16* PINT16;
171typedef INT32* PINT32;
172typedef INT64* PINT64;
174typedef int32_t LONG32, *PLONG32;
177typedef int64_t LONG64, *PLONG64;
181typedef uint8_t UINT8, *PUINT8;
183typedef uint16_t UINT16, *PUINT16;
185typedef uint32_t UINT32, *PUINT32;
187typedef uint64_t UINT64, *PUINT64;
189typedef uint64_t ULONG64, *PULONG64;
191typedef uint16_t WORD, *PWORD, *LPWORD;
193typedef uint32_t DWORD, DWORD32, *PDWORD, *LPDWORD, *PDWORD32;
195typedef uint64_t DWORD64, DWORDLONG, QWORD, *PDWORD64, *PDWORDLONG, *PQWORD;
197typedef intptr_t INT_PTR, *PINT_PTR;
199typedef uintptr_t UINT_PTR, *PUINT_PTR;
201typedef intptr_t LONG_PTR, *PLONG_PTR;
203typedef uintptr_t ULONG_PTR, *PULONG_PTR;
205typedef uintptr_t DWORD_PTR, *PDWORD_PTR;
207typedef ULONG_PTR SIZE_T, *PSIZE_T;
208#if defined(WINPR_HAVE_SSIZE_T)
209#include <sys/types.h>
210typedef ssize_t SSIZE_T;
211#elif !defined(WINPR_HAVE_WIN_SSIZE_T)
212typedef LONG_PTR SSIZE_T;
217typedef double DOUBLE;
220typedef HANDLE *PHANDLE, *LPHANDLE;
221typedef HANDLE HINSTANCE;
222typedef HANDLE HMODULE;
224typedef HANDLE HBITMAP;
226typedef HANDLE HCURSOR;
227typedef HANDLE HBRUSH;
232typedef ULONG error_status_t;
235typedef SCODE* PSCODE;
237typedef struct s_POINTL
243typedef struct tagSIZE
247}
SIZE, *PSIZE, *LPSIZE;
257} GUID,
UUID, *PGUID, *LPGUID, *LPCGUID;
280typedef LPWSTR LPTSTR;
281typedef LPCWSTR LPCTSTR;
286typedef LPCSTR LPCTSTR;
289typedef union u_ULARGE_INTEGER
306typedef union u_LARGE_INTEGER
323typedef struct s_FILETIME
326 DWORD dwHighDateTime;
329typedef struct s_SYSTEMTIME
341typedef struct s_RPC_SID_IDENTIFIER_AUTHORITY
346typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
348typedef struct s_RPC_SID
351 UCHAR SubAuthorityCount;
353 ULONG SubAuthority[1];
365typedef struct s_SECURITY_DESCRIPTOR
376typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
378typedef struct s_SECURITY_ATTRIBUTES
381 LPVOID lpSecurityDescriptor;
385typedef struct s_PROCESS_INFORMATION
393typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
394typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
396typedef void* FARPROC;
424#define DECIMAL_NEG ((BYTE)0x80)
425#define DECIMAL_SETZERO(dec) \
429 (dec).signscale = 0; \
438typedef void* PCONTEXT_HANDLE;
439typedef PCONTEXT_HANDLE* PPCONTEXT_HANDLE;
442typedef LONG NTSTATUS;
443typedef NTSTATUS* PNTSTATUS;
446#ifndef _LPCVOID_DEFINED
448#define _LPCVOID_DEFINED
450typedef const VOID* LPCVOID;
453#ifndef _LPCBYTE_DEFINED
455#define _LPCBYTE_DEFINED
457typedef const BYTE* LPCBYTE;
461#if defined(_POSIX_SSIZE_MAX)
462#define SSIZE_MAX _POSIX_SSIZE_MAX
464#define SSIZE_MAX _I64_MAX
466#define SSIZE_MAX LONG_MAX
468#define SSIZE_MAX INTPTR_MAX
479#include <winpr/user.h>
485static inline int _fseeki64(FILE* fp, INT64 offset,
int origin)
487 return fseeko(fp, offset, origin);
491static inline INT64 _ftelli64(FILE* fp)