Exemplo n.º 1
0
long ZCALLBACK win32_seek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) {
	DWORD dwMoveMethod = 0xFFFFFFFF;
	HANDLE hFile = NULL;
	long ret = -1;
	if (stream != NULL) {
		hFile = ((WIN32FILE_IOWIN *)stream)->hf;
	}
	switch (origin) {
		case ZLIB_FILEFUNC_SEEK_CUR :
			dwMoveMethod = FILE_CURRENT;
			break;
		case ZLIB_FILEFUNC_SEEK_END :
			dwMoveMethod = FILE_END;
			break;
		case ZLIB_FILEFUNC_SEEK_SET :
			dwMoveMethod = FILE_BEGIN;
			break;
		default:
			return -1;
	}
	if (hFile) {
		LARGE_INTEGER pos;
		pos.QuadPart = offset;
		if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT)) {
			DWORD dwErr = GetLastError();
			((WIN32FILE_IOWIN *)stream) -> error = (int)dwErr;
			ret = -1;
		} else {
			ret = 0;
		}
	}
	return ret;
}
Exemplo n.º 2
0
ZPOS64_T ZCALLBACK win32_tell64_file_func(voidpf opaque, voidpf stream) {
	ZPOS64_T ret = (ZPOS64_T) - 1;
	HANDLE hFile = NULL;
	if (stream != NULL) {
		hFile = ((WIN32FILE_IOWIN *)stream)->hf;
	}
	if (hFile) {
		LARGE_INTEGER pos;
		pos.QuadPart = 0;
		if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) {
			DWORD dwErr = GetLastError();
			((WIN32FILE_IOWIN *)stream) -> error = (int)dwErr;
			ret = (ZPOS64_T) - 1;
		} else {
			ret = pos.QuadPart;
		}
	}
	return ret;
}
Exemplo n.º 3
0
long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
{
    long ret=-1;
    HANDLE hFile = NULL;
    if (stream!=NULL)
        hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
    if (hFile != NULL)
    {
        LARGE_INTEGER pos;
        pos.QuadPart = 0;

        if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
        {
            DWORD dwErr = GetLastError();
            ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
            ret = -1;
        }
        else
            ret=(long)pos.LowPart;
    }
    return ret;
}