20 #ifndef INVALID_HANDLE_VALUE
21 #define INVALID_HANDLE_VALUE (0xFFFFFFFF)
24 #ifndef INVALID_SET_FILE_POINTER
25 #define INVALID_SET_FILE_POINTER ((DWORD)-1)
30 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
31 #if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
32 #define IOWIN32_USING_WINRT_API 1
52 DWORD* lpdwDesiredAccess,
53 DWORD* lpdwCreationDisposition,
55 DWORD* lpdwFlagsAndAttributes)
57 *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
61 *lpdwDesiredAccess = GENERIC_READ;
62 *lpdwCreationDisposition = OPEN_EXISTING;
63 *lpdwShareMode = FILE_SHARE_READ;
67 *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
68 *lpdwCreationDisposition = OPEN_EXISTING;
72 *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
73 *lpdwCreationDisposition = CREATE_ALWAYS;
98 const char* mode_fopen = NULL;
99 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
104 #ifdef IOWIN32_USING_WINRT_API
106 if ((filename!=NULL) && (dwDesiredAccess != 0))
107 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
109 if ((filename!=NULL) && (dwDesiredAccess != 0))
111 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
112 MultiByteToWideChar(CP_ACP,0,(
const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
113 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
117 if ((filename!=NULL) && (dwDesiredAccess != 0))
118 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
127 const char* mode_fopen = NULL;
128 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
133 #ifdef IOWIN32_USING_WINRT_API
134 if ((filename!=NULL) && (dwDesiredAccess != 0))
136 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
137 MultiByteToWideChar(CP_ACP,0,(
const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
138 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
141 if ((filename!=NULL) && (dwDesiredAccess != 0))
142 hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
151 const char* mode_fopen = NULL;
152 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
157 #ifdef IOWIN32_USING_WINRT_API
158 if ((filename!=NULL) && (dwDesiredAccess != 0))
159 hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL);
161 if ((filename!=NULL) && (dwDesiredAccess != 0))
162 hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
171 const char* mode_fopen = NULL;
172 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
177 #ifdef IOWIN32_USING_WINRT_API
179 if ((filename!=NULL) && (dwDesiredAccess != 0))
180 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
182 if ((filename!=NULL) && (dwDesiredAccess != 0))
184 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
185 MultiByteToWideChar(CP_ACP,0,(
const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
186 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
190 if ((filename!=NULL) && (dwDesiredAccess != 0))
191 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
207 if (!ReadFile(hFile, buf, size, &ret, NULL))
209 DWORD dwErr = GetLastError();
210 if (dwErr == ERROR_HANDLE_EOF)
229 if (!WriteFile(hFile, buf, size, &ret, NULL))
231 DWORD dwErr = GetLastError();
232 if (dwErr == ERROR_HANDLE_EOF)
241 static BOOL
MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
243 #ifdef IOWIN32_USING_WINRT_API
244 return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
246 LONG lHigh = pos.HighPart;
247 DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, dwMoveMethod);
249 if (dwNewPos == 0xFFFFFFFF)
250 if (GetLastError() != NO_ERROR)
252 if ((newPos != NULL) && (fOk))
254 newPos->LowPart = dwNewPos;
255 newPos->HighPart = lHigh;
274 DWORD dwErr = GetLastError();
279 ret=(
long)pos.LowPart;
298 DWORD dwErr = GetLastError();
311 DWORD dwMoveMethod=0xFFFFFFFF;
320 dwMoveMethod = FILE_CURRENT;
323 dwMoveMethod = FILE_END;
326 dwMoveMethod = FILE_BEGIN;
337 DWORD dwErr = GetLastError();
349 DWORD dwMoveMethod=0xFFFFFFFF;
359 dwMoveMethod = FILE_CURRENT;
362 dwMoveMethod = FILE_END;
365 dwMoveMethod = FILE_BEGIN;
376 DWORD dwErr = GetLastError();
423 pzlib_filefunc_def->
opaque = NULL;
435 pzlib_filefunc_def->
opaque = NULL;
448 pzlib_filefunc_def->
opaque = NULL;
461 pzlib_filefunc_def->
opaque = NULL;
testerror_file_func zerror_file
testerror_file_func zerror_file
uLong ZCALLBACK win32_write_file_func(voidpf opaque, voidpf stream, const void *buf, uLong size)
void fill_win32_filefunc64W(zlib_filefunc64_def *pzlib_filefunc_def)
void fill_win32_filefunc64A(zlib_filefunc64_def *pzlib_filefunc_def)
write_file_func zwrite_file
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER
#define ZLIB_FILEFUNC_MODE_READ
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
void fill_win32_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
voidpf ZCALLBACK win32_open_file_func(voidpf opaque, const char *filename, int mode)
voidpf ZCALLBACK win32_open64_file_funcA(voidpf opaque, const void *filename, int mode)
#define INVALID_HANDLE_VALUE
write_file_func zwrite_file
#define ZLIB_FILEFUNC_SEEK_CUR
voidpf ZCALLBACK win32_open64_file_func(voidpf opaque, const void *filename, int mode)
int ZCALLBACK win32_close_file_func(voidpf opaque, voidpf stream)
static voidpf win32_build_iowin(HANDLE hFile)
close_file_func zclose_file
read_file_func zread_file
ZPOS64_T ZCALLBACK win32_tell64_file_func(voidpf opaque, voidpf stream)
seek_file_func zseek_file
long ZCALLBACK win32_tell_file_func(voidpf opaque, voidpf stream)
long ZCALLBACK win32_seek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin)
long ZCALLBACK win32_seek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
int ZCALLBACK win32_error_file_func(voidpf opaque, voidpf stream)
#define ZLIB_FILEFUNC_MODE_CREATE
unsigned long long int ZPOS64_T
voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char *filename, int mode))
tell_file_func ztell_file
#define ZLIB_FILEFUNC_MODE_EXISTING
close_file_func zclose_file
voidpf ZCALLBACK win32_open64_file_funcW(voidpf opaque, const void *filename, int mode)
open_file_func zopen_file
read_file_func zread_file
void fill_win32_filefunc64(zlib_filefunc64_def *pzlib_filefunc_def)
static void win32_translate_open_mode(int mode, DWORD *lpdwDesiredAccess, DWORD *lpdwCreationDisposition, DWORD *lpdwShareMode, DWORD *lpdwFlagsAndAttributes)
open64_file_func zopen64_file
#define ZLIB_FILEFUNC_SEEK_END
seek64_file_func zseek64_file
static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
uLong ZCALLBACK win32_read_file_func(voidpf opaque, voidpf stream, void *buf, uLong size)
#define ZLIB_FILEFUNC_SEEK_SET
tell64_file_func ztell64_file