Rizin
unix-like reverse engineering framework and cli tools
iowin32.c File Reference
#include <stdlib.h>
#include "zlib.h"
#include "ioapi.h"
#include "iowin32.h"

Go to the source code of this file.

Classes

struct  WIN32FILE_IOWIN
 

Macros

#define INVALID_HANDLE_VALUE   (0xFFFFFFFF)
 
#define INVALID_SET_FILE_POINTER   ((DWORD)-1)
 

Functions

voidpf ZCALLBACK win32_open_file_func OF ((voidpf opaque, const char *filename, int mode))
 
uLong ZCALLBACK win32_read_file_func OF ((voidpf opaque, voidpf stream, void *buf, uLong size))
 
uLong ZCALLBACK win32_write_file_func OF ((voidpf opaque, voidpf stream, const void *buf, uLong size))
 
ZPOS64_T ZCALLBACK win32_tell64_file_func OF ((voidpf opaque, voidpf stream))
 
long ZCALLBACK win32_seek64_file_func OF ((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin))
 
static void win32_translate_open_mode (int mode, DWORD *lpdwDesiredAccess, DWORD *lpdwCreationDisposition, DWORD *lpdwShareMode, DWORD *lpdwFlagsAndAttributes)
 
static voidpf win32_build_iowin (HANDLE hFile)
 
voidpf ZCALLBACK win32_open64_file_func (voidpf opaque, const void *filename, int mode)
 
voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque, const void *filename, int mode)
 
voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque, const void *filename, int mode)
 
voidpf ZCALLBACK win32_open_file_func (voidpf opaque, const char *filename, int mode)
 
uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void *buf, uLong size)
 
uLong ZCALLBACK win32_write_file_func (voidpf opaque, voidpf stream, const void *buf, uLong size)
 
static BOOL MySetFilePointerEx (HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
 
long ZCALLBACK win32_tell_file_func (voidpf opaque, voidpf stream)
 
ZPOS64_T ZCALLBACK win32_tell64_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)
 
int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
 
int ZCALLBACK win32_error_file_func (voidpf opaque, voidpf stream)
 
void fill_win32_filefunc (zlib_filefunc_def *pzlib_filefunc_def)
 
void fill_win32_filefunc64 (zlib_filefunc64_def *pzlib_filefunc_def)
 
void fill_win32_filefunc64A (zlib_filefunc64_def *pzlib_filefunc_def)
 
void fill_win32_filefunc64W (zlib_filefunc64_def *pzlib_filefunc_def)
 

Macro Definition Documentation

◆ INVALID_HANDLE_VALUE

#define INVALID_HANDLE_VALUE   (0xFFFFFFFF)

Definition at line 21 of file iowin32.c.

◆ INVALID_SET_FILE_POINTER

#define INVALID_SET_FILE_POINTER   ((DWORD)-1)

Definition at line 25 of file iowin32.c.

Function Documentation

◆ fill_win32_filefunc()

void fill_win32_filefunc ( zlib_filefunc_def pzlib_filefunc_def)

Definition at line 414 of file iowin32.c.

415 {
416  pzlib_filefunc_def->zopen_file = win32_open_file_func;
417  pzlib_filefunc_def->zread_file = win32_read_file_func;
418  pzlib_filefunc_def->zwrite_file = win32_write_file_func;
419  pzlib_filefunc_def->ztell_file = win32_tell_file_func;
420  pzlib_filefunc_def->zseek_file = win32_seek_file_func;
421  pzlib_filefunc_def->zclose_file = win32_close_file_func;
422  pzlib_filefunc_def->zerror_file = win32_error_file_func;
423  pzlib_filefunc_def->opaque = NULL;
424 }
#define NULL
Definition: cris-opc.c:27
long ZCALLBACK win32_seek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin)
Definition: iowin32.c:309
int ZCALLBACK win32_close_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:386
uLong ZCALLBACK win32_write_file_func(voidpf opaque, voidpf stream, const void *buf, uLong size)
Definition: iowin32.c:220
long ZCALLBACK win32_tell_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:261
int ZCALLBACK win32_error_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:404
voidpf ZCALLBACK win32_open_file_func(voidpf opaque, const char *filename, int mode)
Definition: iowin32.c:169
uLong ZCALLBACK win32_read_file_func(voidpf opaque, voidpf stream, void *buf, uLong size)
Definition: iowin32.c:198
seek_file_func zseek_file
Definition: ioapi.h:154
open_file_func zopen_file
Definition: ioapi.h:150
testerror_file_func zerror_file
Definition: ioapi.h:156
write_file_func zwrite_file
Definition: ioapi.h:152
read_file_func zread_file
Definition: ioapi.h:151
close_file_func zclose_file
Definition: ioapi.h:155
tell_file_func ztell_file
Definition: ioapi.h:153

References NULL, zlib_filefunc_def_s::opaque, win32_close_file_func(), win32_error_file_func(), win32_open_file_func(), win32_read_file_func(), win32_seek_file_func(), win32_tell_file_func(), win32_write_file_func(), zlib_filefunc_def_s::zclose_file, zlib_filefunc_def_s::zerror_file, zlib_filefunc_def_s::zopen_file, zlib_filefunc_def_s::zread_file, zlib_filefunc_def_s::zseek_file, zlib_filefunc_def_s::ztell_file, and zlib_filefunc_def_s::zwrite_file.

◆ fill_win32_filefunc64()

void fill_win32_filefunc64 ( zlib_filefunc64_def pzlib_filefunc_def)

Definition at line 426 of file iowin32.c.

427 {
428  pzlib_filefunc_def->zopen64_file = win32_open64_file_func;
429  pzlib_filefunc_def->zread_file = win32_read_file_func;
430  pzlib_filefunc_def->zwrite_file = win32_write_file_func;
431  pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
432  pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
433  pzlib_filefunc_def->zclose_file = win32_close_file_func;
434  pzlib_filefunc_def->zerror_file = win32_error_file_func;
435  pzlib_filefunc_def->opaque = NULL;
436 }
ZPOS64_T ZCALLBACK win32_tell64_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:284
long ZCALLBACK win32_seek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
Definition: iowin32.c:347
voidpf ZCALLBACK win32_open64_file_func(voidpf opaque, const void *filename, int mode)
Definition: iowin32.c:96
write_file_func zwrite_file
Definition: ioapi.h:168
open64_file_func zopen64_file
Definition: ioapi.h:166
read_file_func zread_file
Definition: ioapi.h:167
tell64_file_func ztell64_file
Definition: ioapi.h:169
close_file_func zclose_file
Definition: ioapi.h:171
seek64_file_func zseek64_file
Definition: ioapi.h:170
testerror_file_func zerror_file
Definition: ioapi.h:172

References NULL, zlib_filefunc64_def_s::opaque, win32_close_file_func(), win32_error_file_func(), win32_open64_file_func(), win32_read_file_func(), win32_seek64_file_func(), win32_tell64_file_func(), win32_write_file_func(), zlib_filefunc64_def_s::zclose_file, zlib_filefunc64_def_s::zerror_file, zlib_filefunc64_def_s::zopen64_file, zlib_filefunc64_def_s::zread_file, zlib_filefunc64_def_s::zseek64_file, zlib_filefunc64_def_s::ztell64_file, and zlib_filefunc64_def_s::zwrite_file.

◆ fill_win32_filefunc64A()

void fill_win32_filefunc64A ( zlib_filefunc64_def pzlib_filefunc_def)

◆ fill_win32_filefunc64W()

◆ MySetFilePointerEx()

static BOOL MySetFilePointerEx ( HANDLE  hFile,
LARGE_INTEGER  pos,
LARGE_INTEGER *  newPos,
DWORD  dwMoveMethod 
)
static

Definition at line 241 of file iowin32.c.

242 {
243 #ifdef IOWIN32_USING_WINRT_API
244  return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
245 #else
246  LONG lHigh = pos.HighPart;
247  DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, dwMoveMethod);
248  BOOL fOk = TRUE;
249  if (dwNewPos == 0xFFFFFFFF)
250  if (GetLastError() != NO_ERROR)
251  fOk = FALSE;
252  if ((newPos != NULL) && (fOk))
253  {
254  newPos->LowPart = dwNewPos;
255  newPos->HighPart = lHigh;
256  }
257  return fOk;
258 #endif
259 }
#define LONG
#define TRUE
Definition: mybfd.h:103
#define FALSE
Definition: mybfd.h:102
int pos
Definition: main.c:11
DWORD

References DWORD, FALSE, LONG, NULL, pos, and TRUE.

Referenced by win32_seek64_file_func(), win32_seek_file_func(), win32_tell64_file_func(), and win32_tell_file_func().

◆ OF() [1/5]

◆ OF() [2/5]

◆ OF() [3/5]

◆ OF() [4/5]

◆ OF() [5/5]

◆ win32_build_iowin()

static voidpf win32_build_iowin ( HANDLE  hFile)
static

Definition at line 77 of file iowin32.c.

78 {
79  voidpf ret=NULL;
80 
81  if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
82  {
83  WIN32FILE_IOWIN w32fiow;
84  w32fiow.hf = hFile;
85  w32fiow.error = 0;
86  ret = malloc(sizeof(WIN32FILE_IOWIN));
87 
88  if (ret==NULL)
89  CloseHandle(hFile);
90  else
91  *((WIN32FILE_IOWIN*)ret) = w32fiow;
92  }
93  return ret;
94 }
#define INVALID_HANDLE_VALUE
Definition: iowin32.c:21
void * malloc(size_t size)
Definition: malloc.c:123
HANDLE hf
Definition: iowin32.c:46
Byte FAR * voidpf
Definition: zconf.h:413

References WIN32FILE_IOWIN::error, WIN32FILE_IOWIN::hf, INVALID_HANDLE_VALUE, malloc(), and NULL.

Referenced by win32_open64_file_func(), win32_open64_file_funcA(), win32_open64_file_funcW(), and win32_open_file_func().

◆ win32_close_file_func()

int ZCALLBACK win32_close_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 386 of file iowin32.c.

387 {
388  int ret=-1;
389 
390  if (stream!=NULL)
391  {
392  HANDLE hFile;
393  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
394  if (hFile != NULL)
395  {
396  CloseHandle(hFile);
397  ret=0;
398  }
399  free(stream);
400  }
401  return ret;
402 }
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
voidpf stream
Definition: ioapi.h:138
DWORD * HANDLE

References free(), HANDLE, and NULL.

Referenced by fill_win32_filefunc(), fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().

◆ win32_error_file_func()

int ZCALLBACK win32_error_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 404 of file iowin32.c.

405 {
406  int ret=-1;
407  if (stream!=NULL)
408  {
409  ret = ((WIN32FILE_IOWIN*)stream) -> error;
410  }
411  return ret;
412 }
void error(const char *msg)
Definition: untgz.c:593

References error(), and NULL.

Referenced by fill_win32_filefunc(), fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().

◆ win32_open64_file_func()

voidpf ZCALLBACK win32_open64_file_func ( voidpf  opaque,
const void *  filename,
int  mode 
)

Definition at line 96 of file iowin32.c.

97 {
98  const char* mode_fopen = NULL;
99  DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
100  HANDLE hFile = NULL;
101 
102  win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
103 
104 #ifdef IOWIN32_USING_WINRT_API
105 #ifdef UNICODE
106  if ((filename!=NULL) && (dwDesiredAccess != 0))
107  hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
108 #else
109  if ((filename!=NULL) && (dwDesiredAccess != 0))
110  {
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);
114  }
115 #endif
116 #else
117  if ((filename!=NULL) && (dwDesiredAccess != 0))
118  hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
119 #endif
120 
121  return win32_build_iowin(hFile);
122 }
const char * filename
Definition: ioapi.h:137
const char int mode
Definition: ioapi.h:137
static voidpf win32_build_iowin(HANDLE hFile)
Definition: iowin32.c:77
static void win32_translate_open_mode(int mode, DWORD *lpdwDesiredAccess, DWORD *lpdwCreationDisposition, DWORD *lpdwShareMode, DWORD *lpdwFlagsAndAttributes)
Definition: iowin32.c:51

References DWORD, HANDLE, NULL, win32_build_iowin(), and win32_translate_open_mode().

Referenced by fill_win32_filefunc64().

◆ win32_open64_file_funcA()

voidpf ZCALLBACK win32_open64_file_funcA ( voidpf  opaque,
const void *  filename,
int  mode 
)

Definition at line 125 of file iowin32.c.

126 {
127  const char* mode_fopen = NULL;
128  DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
129  HANDLE hFile = NULL;
130 
131  win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
132 
133 #ifdef IOWIN32_USING_WINRT_API
134  if ((filename!=NULL) && (dwDesiredAccess != 0))
135  {
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);
139  }
140 #else
141  if ((filename!=NULL) && (dwDesiredAccess != 0))
142  hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
143 #endif
144 
145  return win32_build_iowin(hFile);
146 }

References DWORD, HANDLE, NULL, win32_build_iowin(), and win32_translate_open_mode().

Referenced by fill_win32_filefunc64A().

◆ win32_open64_file_funcW()

voidpf ZCALLBACK win32_open64_file_funcW ( voidpf  opaque,
const void *  filename,
int  mode 
)

Definition at line 149 of file iowin32.c.

150 {
151  const char* mode_fopen = NULL;
152  DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
153  HANDLE hFile = NULL;
154 
155  win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
156 
157 #ifdef IOWIN32_USING_WINRT_API
158  if ((filename!=NULL) && (dwDesiredAccess != 0))
159  hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL);
160 #else
161  if ((filename!=NULL) && (dwDesiredAccess != 0))
162  hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
163 #endif
164 
165  return win32_build_iowin(hFile);
166 }

References DWORD, HANDLE, NULL, win32_build_iowin(), and win32_translate_open_mode().

Referenced by fill_win32_filefunc64W().

◆ win32_open_file_func()

voidpf ZCALLBACK win32_open_file_func ( voidpf  opaque,
const char *  filename,
int  mode 
)

Definition at line 169 of file iowin32.c.

170 {
171  const char* mode_fopen = NULL;
172  DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
173  HANDLE hFile = NULL;
174 
175  win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
176 
177 #ifdef IOWIN32_USING_WINRT_API
178 #ifdef UNICODE
179  if ((filename!=NULL) && (dwDesiredAccess != 0))
180  hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
181 #else
182  if ((filename!=NULL) && (dwDesiredAccess != 0))
183  {
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);
187  }
188 #endif
189 #else
190  if ((filename!=NULL) && (dwDesiredAccess != 0))
191  hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
192 #endif
193 
194  return win32_build_iowin(hFile);
195 }

References DWORD, HANDLE, NULL, win32_build_iowin(), and win32_translate_open_mode().

Referenced by fill_win32_filefunc().

◆ win32_read_file_func()

uLong ZCALLBACK win32_read_file_func ( voidpf  opaque,
voidpf  stream,
void *  buf,
uLong  size 
)

Definition at line 198 of file iowin32.c.

199 {
200  uLong ret=0;
201  HANDLE hFile = NULL;
202  if (stream!=NULL)
203  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
204 
205  if (hFile != NULL)
206  {
207  if (!ReadFile(hFile, buf, size, &ret, NULL))
208  {
209  DWORD dwErr = GetLastError();
210  if (dwErr == ERROR_HANDLE_EOF)
211  dwErr = 0;
212  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
213  }
214  }
215 
216  return ret;
217 }
voidpf void uLong size
Definition: ioapi.h:138
voidpf void * buf
Definition: ioapi.h:138
static int
Definition: sfsocketcall.h:114
unsigned long uLong
Definition: zconf.h:394

References DWORD, error(), HANDLE, int, and NULL.

Referenced by fill_win32_filefunc(), fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().

◆ win32_seek64_file_func()

long ZCALLBACK win32_seek64_file_func ( voidpf  opaque,
voidpf  stream,
ZPOS64_T  offset,
int  origin 
)

Definition at line 347 of file iowin32.c.

348 {
349  DWORD dwMoveMethod=0xFFFFFFFF;
350  HANDLE hFile = NULL;
351  long ret=-1;
352 
353  if (stream!=NULL)
354  hFile = ((WIN32FILE_IOWIN*)stream)->hf;
355 
356  switch (origin)
357  {
359  dwMoveMethod = FILE_CURRENT;
360  break;
362  dwMoveMethod = FILE_END;
363  break;
365  dwMoveMethod = FILE_BEGIN;
366  break;
367  default: return -1;
368  }
369 
370  if (hFile)
371  {
372  LARGE_INTEGER pos;
373  pos.QuadPart = offset;
374  if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod))
375  {
376  DWORD dwErr = GetLastError();
377  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
378  ret = -1;
379  }
380  else
381  ret=0;
382  }
383  return ret;
384 }
voidpf uLong int origin
Definition: ioapi.h:144
voidpf uLong offset
Definition: ioapi.h:144
#define ZLIB_FILEFUNC_SEEK_CUR
Definition: ioapi.h:114
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:116
#define ZLIB_FILEFUNC_SEEK_END
Definition: ioapi.h:115
static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
Definition: iowin32.c:241

References DWORD, error(), HANDLE, int, MySetFilePointerEx(), NULL, pos, ZLIB_FILEFUNC_SEEK_CUR, ZLIB_FILEFUNC_SEEK_END, and ZLIB_FILEFUNC_SEEK_SET.

Referenced by fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().

◆ win32_seek_file_func()

long ZCALLBACK win32_seek_file_func ( voidpf  opaque,
voidpf  stream,
uLong  offset,
int  origin 
)

Definition at line 309 of file iowin32.c.

310 {
311  DWORD dwMoveMethod=0xFFFFFFFF;
312  HANDLE hFile = NULL;
313 
314  long ret=-1;
315  if (stream!=NULL)
316  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
317  switch (origin)
318  {
320  dwMoveMethod = FILE_CURRENT;
321  break;
323  dwMoveMethod = FILE_END;
324  break;
326  dwMoveMethod = FILE_BEGIN;
327  break;
328  default: return -1;
329  }
330 
331  if (hFile != NULL)
332  {
333  LARGE_INTEGER pos;
334  pos.QuadPart = offset;
335  if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod))
336  {
337  DWORD dwErr = GetLastError();
338  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
339  ret = -1;
340  }
341  else
342  ret=0;
343  }
344  return ret;
345 }

References DWORD, error(), HANDLE, int, MySetFilePointerEx(), NULL, pos, ZLIB_FILEFUNC_SEEK_CUR, ZLIB_FILEFUNC_SEEK_END, and ZLIB_FILEFUNC_SEEK_SET.

Referenced by fill_win32_filefunc().

◆ win32_tell64_file_func()

ZPOS64_T ZCALLBACK win32_tell64_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 284 of file iowin32.c.

285 {
286  ZPOS64_T ret= (ZPOS64_T)-1;
287  HANDLE hFile = NULL;
288  if (stream!=NULL)
289  hFile = ((WIN32FILE_IOWIN*)stream)->hf;
290 
291  if (hFile)
292  {
293  LARGE_INTEGER pos;
294  pos.QuadPart = 0;
295 
296  if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
297  {
298  DWORD dwErr = GetLastError();
299  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
300  ret = (ZPOS64_T)-1;
301  }
302  else
303  ret=pos.QuadPart;
304  }
305  return ret;
306 }
unsigned long long int ZPOS64_T
Definition: ioapi.h:99

References DWORD, error(), HANDLE, int, MySetFilePointerEx(), NULL, and pos.

Referenced by fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().

◆ win32_tell_file_func()

long ZCALLBACK win32_tell_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 261 of file iowin32.c.

262 {
263  long ret=-1;
264  HANDLE hFile = NULL;
265  if (stream!=NULL)
266  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
267  if (hFile != NULL)
268  {
269  LARGE_INTEGER pos;
270  pos.QuadPart = 0;
271 
272  if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
273  {
274  DWORD dwErr = GetLastError();
275  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
276  ret = -1;
277  }
278  else
279  ret=(long)pos.LowPart;
280  }
281  return ret;
282 }
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags long
Definition: sflib.h:79

References DWORD, error(), HANDLE, int, long, MySetFilePointerEx(), NULL, and pos.

Referenced by fill_win32_filefunc().

◆ win32_translate_open_mode()

static void win32_translate_open_mode ( int  mode,
DWORD lpdwDesiredAccess,
DWORD lpdwCreationDisposition,
DWORD lpdwShareMode,
DWORD lpdwFlagsAndAttributes 
)
static

Definition at line 51 of file iowin32.c.

56 {
57  *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
58 
60  {
61  *lpdwDesiredAccess = GENERIC_READ;
62  *lpdwCreationDisposition = OPEN_EXISTING;
63  *lpdwShareMode = FILE_SHARE_READ;
64  }
66  {
67  *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
68  *lpdwCreationDisposition = OPEN_EXISTING;
69  }
71  {
72  *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
73  *lpdwCreationDisposition = CREATE_ALWAYS;
74  }
75 }
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER
Definition: ioapi.h:120
#define ZLIB_FILEFUNC_MODE_EXISTING
Definition: ioapi.h:122
#define ZLIB_FILEFUNC_MODE_CREATE
Definition: ioapi.h:123
#define ZLIB_FILEFUNC_MODE_READ
Definition: ioapi.h:118

References ZLIB_FILEFUNC_MODE_CREATE, ZLIB_FILEFUNC_MODE_EXISTING, ZLIB_FILEFUNC_MODE_READ, and ZLIB_FILEFUNC_MODE_READWRITEFILTER.

Referenced by win32_open64_file_func(), win32_open64_file_funcA(), win32_open64_file_funcW(), and win32_open_file_func().

◆ win32_write_file_func()

uLong ZCALLBACK win32_write_file_func ( voidpf  opaque,
voidpf  stream,
const void *  buf,
uLong  size 
)

Definition at line 220 of file iowin32.c.

221 {
222  uLong ret=0;
223  HANDLE hFile = NULL;
224  if (stream!=NULL)
225  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
226 
227  if (hFile != NULL)
228  {
229  if (!WriteFile(hFile, buf, size, &ret, NULL))
230  {
231  DWORD dwErr = GetLastError();
232  if (dwErr == ERROR_HANDLE_EOF)
233  dwErr = 0;
234  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
235  }
236  }
237 
238  return ret;
239 }

References DWORD, error(), HANDLE, int, and NULL.

Referenced by fill_win32_filefunc(), fill_win32_filefunc64(), fill_win32_filefunc64A(), and fill_win32_filefunc64W().