}
for (i = 0; i <= blocks; i++) {
DWORD outlen;
- LONG high;
- high = (DWORD)(offset >> 32);
- if (SetFilePointer (h, (DWORD)offset, &high, FILE_BEGIN) == INVALID_FILE_SIZE)
+ LARGE_INTEGER fppos;
+ fppos.QuadPart = offset;
+ if (SetFilePointer (h, fppos.LowPart, &fppos.HighPart, FILE_BEGIN) == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR)
break;
ReadFile (h, buf, blocksize, &outlen, NULL);
fwrite (buf, 1, blocksize, f);
uae_u64 origoffset = offset;
int i, j, blocks = 63, empty = 1;
DWORD outlen;
- LONG high;
for (j = 0; j < blocks; j++) {
- high = (LONG)(offset >> 32);
- if (SetFilePointer (h, (DWORD)offset, &high, FILE_BEGIN) == INVALID_FILE_SIZE) {
+ LARGE_INTEGER fppos;
+ fppos.QuadPart = offset;
+ if (SetFilePointer (h, fppos.LowPart, &fppos.HighPart, FILE_BEGIN) == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) {
write_log (_T("hd ignored, SetFilePointer failed, error %d\n"), GetLastError ());
return 1;
}
LONG high = 0;
DWORD high2;
ret = SetFilePointer (h, 0, &high, FILE_END);
- if (ret == INVALID_FILE_SIZE && GetLastError () != NO_ERROR)
+ if (ret == INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR)
goto end;
low = GetFileSize (h, &high2);
- if (low == INVALID_FILE_SIZE && GetLastError () != NO_ERROR)
+ if (low == INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR)
goto end;
low &= ~(hfd->ci.blocksize - 1);
hfd->physsize = hfd->virtsize = ((uae_u64)high2 << 32) | low;
abort ();
}
if (hfd->handle_valid == HDF_HANDLE_WIN32) {
- LONG high = (LONG)(offset >> 32);
- ret = SetFilePointer (hfd->handle->h, (DWORD)offset, &high, FILE_BEGIN);
- if (ret == INVALID_FILE_SIZE && GetLastError() != NO_ERROR)
+ LARGE_INTEGER fppos;
+ fppos.QuadPart = offset;
+ ret = SetFilePointer (hfd->handle->h, fppos.LowPart, &fppos.HighPart, FILE_BEGIN);
+ if (ret == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR)
return -1;
} else if (hfd->handle_valid == HDF_HANDLE_ZFILE) {
zfile_fseek (hfd->handle->zf, (long)offset, SEEK_SET);
static void poscheck (struct hardfiledata *hfd, int len)
{
- DWORD ret, err;
- uae_u64 pos;
+ DWORD err;
+ uae_s64 pos;
if (hfd->handle_valid == HDF_HANDLE_WIN32) {
- LONG high = 0;
- ret = SetFilePointer (hfd->handle->h, 0, &high, FILE_CURRENT);
- err = GetLastError ();
- if (ret == INVALID_FILE_SIZE && err != NO_ERROR) {
- gui_message (_T("hd: poscheck failed. seek failure, error %d"), err);
- abort ();
+ LARGE_INTEGER fppos;
+ fppos.QuadPart = 0;
+ fppos.LowPart = SetFilePointer (hfd->handle->h, 0, &fppos.HighPart, FILE_CURRENT);
+ if (fppos.LowPart == INVALID_SET_FILE_POINTER) {
+ err = GetLastError ();
+ if (err != NO_ERROR) {
+ gui_message (_T("hd: poscheck failed. seek failure, error %d"), err);
+ abort ();
+ }
}
- pos = ((uae_u64)high) << 32 | ret;
+ pos = fppos.QuadPart;
} else if (hfd->handle_valid == HDF_HANDLE_ZFILE) {
pos = zfile_ftell (hfd->handle->zf);
}
goto err;
li.QuadPart = size;
ret = SetFilePointer (hdst, li.LowPart, &li.HighPart, FILE_BEGIN);
- if (ret == INVALID_FILE_SIZE && GetLastError () != NO_ERROR)
+ if (ret == INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR)
goto err;
if (!SetEndOfFile (hdst))
goto err;