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>
101#define OBJC_BOOL_IS_CHAR 1
102typedef signed char BOOL;
110typedef BOOL *PBOOL, *LPBOOL;
124typedef BYTE byte, *PBYTE, *LPBYTE;
125typedef BYTE BOOLEAN, PBOOLEAN;
129typedef unsigned char UCHAR;
133typedef uint8_t UCHAR;
136typedef CHAR CCHAR, *PCHAR, *LPCH, *PCH, *PSTR, *LPSTR;
137typedef const CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR;
138typedef UCHAR* PUCHAR;
140typedef uint16_t WCHAR;
142typedef WCHAR UNICODE, *PWCHAR, *LPWCH, *PWCH, *BSTR, *LMSTR, *LPWSTR, *PWSTR;
143typedef const WCHAR *LPCWCH, *PCWCH, *LMCSTR, *LPCWSTR, *PCWSTR;
145typedef int16_t SHORT, *PSHORT;
147typedef int32_t INT, *PINT, *LPINT;
149typedef int32_t LONG, *PLONG, *LPLONG;
151typedef int64_t LONGLONG, *PLONGLONG;
153typedef uint32_t UINT, *PUINT, *LPUINT;
155typedef uint16_t USHORT, *PUSHORT;
157typedef uint32_t ULONG, *PULONG;
159typedef uint64_t ULONGLONG, *PULONGLONG;
164typedef int16_t INT16;
166typedef int32_t INT32;
168typedef int64_t INT64;
172typedef INT16* PINT16;
173typedef INT32* PINT32;
174typedef INT64* PINT64;
176typedef int32_t LONG32, *PLONG32;
179typedef int64_t LONG64, *PLONG64;
183typedef uint8_t UINT8, *PUINT8;
185typedef uint16_t UINT16, *PUINT16;
187typedef uint32_t UINT32, *PUINT32;
189typedef uint64_t UINT64, *PUINT64;
191typedef uint64_t ULONG64, *PULONG64;
193typedef uint16_t WORD, *PWORD, *LPWORD;
195typedef uint32_t DWORD, DWORD32, *PDWORD, *LPDWORD, *PDWORD32;
197typedef uint64_t DWORD64, DWORDLONG, QWORD, *PDWORD64, *PDWORDLONG, *PQWORD;
199typedef intptr_t INT_PTR, *PINT_PTR;
201typedef uintptr_t UINT_PTR, *PUINT_PTR;
203typedef intptr_t LONG_PTR, *PLONG_PTR;
205typedef uintptr_t ULONG_PTR, *PULONG_PTR;
207typedef uintptr_t DWORD_PTR, *PDWORD_PTR;
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;
219typedef double DOUBLE;
222typedef HANDLE *PHANDLE, *LPHANDLE;
223typedef HANDLE HINSTANCE;
224typedef HANDLE HMODULE;
226typedef HANDLE HBITMAP;
228typedef HANDLE HCURSOR;
229typedef HANDLE HBRUSH;
234typedef ULONG error_status_t;
237typedef SCODE* PSCODE;
239typedef struct s_POINTL
245typedef struct tagSIZE
249}
SIZE, *PSIZE, *LPSIZE;
259} GUID,
UUID, *PGUID, *LPGUID, *LPCGUID;
282typedef LPWSTR LPTSTR;
283typedef LPCWSTR LPCTSTR;
288typedef LPCSTR LPCTSTR;
291typedef union u_ULARGE_INTEGER
308typedef union u_LARGE_INTEGER
325typedef struct s_FILETIME
328 DWORD dwHighDateTime;
331typedef struct s_SYSTEMTIME
343typedef struct s_RPC_SID_IDENTIFIER_AUTHORITY
348typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
350typedef struct s_RPC_SID
353 UCHAR SubAuthorityCount;
355 ULONG SubAuthority[1];
367typedef struct s_SECURITY_DESCRIPTOR
378typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
380typedef struct s_SECURITY_ATTRIBUTES
383 LPVOID lpSecurityDescriptor;
387typedef struct s_PROCESS_INFORMATION
395typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
396typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
398typedef void* FARPROC;
426#define DECIMAL_NEG ((BYTE)0x80)
427#define DECIMAL_SETZERO(dec) \
431 (dec).signscale = 0; \
440typedef void* PCONTEXT_HANDLE;
441typedef PCONTEXT_HANDLE* PPCONTEXT_HANDLE;
444typedef LONG NTSTATUS;
445typedef NTSTATUS* PNTSTATUS;
448#ifndef _LPCVOID_DEFINED
450#define _LPCVOID_DEFINED
452typedef const VOID* LPCVOID;
455#ifndef _LPCBYTE_DEFINED
457#define _LPCBYTE_DEFINED
459typedef const BYTE* LPCBYTE;
463#if defined(_POSIX_SSIZE_MAX)
464#define SSIZE_MAX _POSIX_SSIZE_MAX
466#define SSIZE_MAX _I64_MAX
468#define SSIZE_MAX LONG_MAX
470#define SSIZE_MAX INTPTR_MAX
481#include <winpr/user.h>
487static inline int _fseeki64(FILE* fp, INT64 offset,
int origin)
489 return fseeko(fp, offset, origin);
493static inline INT64 _ftelli64(FILE* fp)