61 IBackgroundCopyFile2_AddRef(iface);
84 IBackgroundCopyJob3_Release(&
file->owner->IBackgroundCopyJob3_iface);
118 BG_FILE_PROGRESS *pVal)
125 *pVal =
file->fileProgress;
137 FIXME(
"(%p)->(%p %p)\n",
file, RangeCount, Ranges);
175 if (!
This->info.RemoteName)
182 if (!
This->info.LocalName)
192 This->fileProgress.BytesTotal = BG_SIZE_UNKNOWN;
193 This->fileProgress.BytesTransferred = 0;
197 This->tempFileName[0] = 0;
208 case 200:
return S_OK;
219 FIXME(
"unhandled response code %u\n",
code);
246 job->error.context = BG_ERROR_CONTEXT_REMOTE_FILE;
247 if (
job->error.file) IBackgroundCopyFile2_Release(
job->error.file);
248 job->error.file = &
file->IBackgroundCopyFile2_iface;
249 IBackgroundCopyFile2_AddRef(
job->error.file);
258 job->error.context = 0;
261 IBackgroundCopyFile2_Release(
job->error.file);
272 file->fileProgress.BytesTotal =
len;
278 file->read_size = buflen;
351 for (
i = 0;
i < BG_AUTH_TARGET_PROXY;
i++)
354 for (
j = 0;
j < BG_AUTH_SCHEME_PASSPORT;
j++)
408 if (!
file->read_size)
break;
412 file->fileProgress.BytesTransferred +=
file->read_size;
413 job->jobProgress.BytesTransferred +=
file->read_size;
440 diff = (
file->fileProgress.BytesTotal == BG_SIZE_UNKNOWN
442 : totalTransferred.
QuadPart -
file->fileProgress.BytesTransferred);
444 file->fileProgress.BytesTransferred = totalTransferred.
QuadPart;
445 job->jobProgress.BytesTransferred += diff;
448 return (
job->state == BG_JOB_STATE_TRANSFERRING
455 static const WCHAR fileW[] = {
'f',
'i',
'l',
'e',
':',
'/',
'/',0};
463 ptr =
file->info.RemoteName + 7;
479 static const WCHAR prefix[] = {
'B',
'I',
'T', 0};
502 file->fileProgress.BytesTotal = BG_SIZE_UNKNOWN;
503 file->fileProgress.BytesTransferred = 0;
507 TRACE(
"Transferring: %s -> %s -> %s\n",
530 TRACE(
"WinHttpCrackUrl failed, trying local file copy\n");
541 file->fileProgress.Completed =
TRUE;
542 job->jobProgress.FilesTransferred++;
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
HINTERNET WINAPI WinHttpConnect(HINTERNET hsession, LPCWSTR server, INTERNET_PORT port, DWORD reserved)
IBackgroundCopyJob3 IBackgroundCopyJob3_iface
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define BG_E_HTTP_ERROR_504
BOOL WINAPI WinHttpCloseHandle(HINTERNET handle)
#define HRESULT_FROM_WIN32(x)
BOOL transitionJobState(BackgroundCopyJobImpl *job, BG_JOB_STATE from, BG_JOB_STATE to)
static struct object_header ** handles
static HRESULT WINAPI BackgroundCopyFile_GetFileRanges(IBackgroundCopyFile2 *iface, DWORD *RangeCount, BG_FILE_RANGE **Ranges)
static DWORD CALLBACK progress_callback_local(LARGE_INTEGER totalSize, LARGE_INTEGER totalTransferred, LARGE_INTEGER streamSize, LARGE_INTEGER streamTransferred, DWORD streamNum, DWORD reason, HANDLE srcFile, HANDLE dstFile, LPVOID obj)
static HRESULT WINAPI BackgroundCopyFile_SetRemoteName(IBackgroundCopyFile2 *iface, LPCWSTR Val)
static WCHAR * strdupW(const WCHAR *src)
#define BG_E_HTTP_ERROR_404
static UINT scheme_from_index(UINT index)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
#define WINHTTP_QUERY_STATUS_CODE
#define INVALID_HANDLE_VALUE
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
#define BG_E_HTTP_ERROR_503
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
#define WINHTTP_AUTH_SCHEME_NTLM
#define BG_E_HTTP_ERROR_505
static void CALLBACK progress_callback_http(HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buf, DWORD buflen)
GLsizei GLsizei GLuint * obj
static HRESULT hresult_from_http_response(DWORD code)
GLenum GLuint GLenum GLsizei const GLchar * buf
static HRESULT WINAPI BackgroundCopyFile_QueryInterface(IBackgroundCopyFile2 *iface, REFIID riid, void **obj)
BOOL WINAPI WinHttpQueryHeaders(HINTERNET hrequest, DWORD level, LPCWSTR name, LPVOID buffer, LPDWORD buflen, LPDWORD index)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
static const IBackgroundCopyFile2Vtbl BackgroundCopyFile2Vtbl
static HRESULT return_strval(const WCHAR *str, WCHAR **ret)
FILE *CDECL tmpfile(void)
BOOL WINAPI WinHttpReceiveResponse(HINTERNET hrequest, LPVOID reserved)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
HRESULT BackgroundCopyFileConstructor(BackgroundCopyJobImpl *owner, LPCWSTR remoteName, LPCWSTR localName, BackgroundCopyFileImpl **file)
#define WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define WINHTTP_FLAG_SECURE
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
BOOL WINAPI WinHttpCrackUrl(LPCWSTR url, DWORD len, DWORD flags, LPURL_COMPONENTSW uc)
static BOOL transfer_file_local(BackgroundCopyFileImpl *file, const WCHAR *tmpname)
#define BG_E_HTTP_ERROR_501
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define PROGRESS_CONTINUE
#define WINHTTP_AUTH_SCHEME_PASSPORT
static BOOL transfer_file_http(BackgroundCopyFileImpl *file, URL_COMPONENTSW *uc, const WCHAR *tmpfile)
#define WINHTTP_QUERY_FLAG_NUMBER
static ULONG WINAPI BackgroundCopyFile_AddRef(IBackgroundCopyFile2 *iface)
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG code
static HRESULT WINAPI BackgroundCopyFile_GetProgress(IBackgroundCopyFile2 *iface, BG_FILE_PROGRESS *pVal)
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
static BOOL set_request_credentials(HINTERNET req, BackgroundCopyJobImpl *job)
#define WINHTTP_OPTION_CONTEXT_VALUE
BG_LENGTH_TO_EOF(UINT64) struct _BG_FILE_RANGE BG_FILE_RANGE
#define WINHTTP_QUERY_CONTENT_LENGTH
static BackgroundCopyFileImpl * impl_from_IBackgroundCopyFile2(IBackgroundCopyFile2 *iface)
WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(HINTERNET handle, WINHTTP_STATUS_CALLBACK callback, DWORD flags, DWORD_PTR reserved)
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
#define WINHTTP_AUTH_SCHEME_NEGOTIATE
WINE_DEFAULT_DEBUG_CHANNEL(qmgr)
#define FILE_ATTRIBUTE_NORMAL
#define InterlockedDecrement
T1_FIELD_DICT_PRIVATE password
BOOL WINAPI CopyFileExW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN LPBOOL pbCancel OPTIONAL, IN DWORD dwCopyFlags)
BOOL WINAPI WinHttpSetCredentials(HINTERNET hrequest, DWORD target, DWORD scheme, LPCWSTR username, LPCWSTR password, LPVOID params)
#define WINHTTP_AUTH_SCHEME_BASIC
#define WINHTTP_CALLBACK_STATUS_READ_COMPLETE
BOOL WINAPI WinHttpSetOption(HINTERNET handle, DWORD option, LPVOID buffer, DWORD buflen)
#define BG_E_HTTP_ERROR_407
#define InterlockedIncrement
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
HINTERNET WINAPI WinHttpOpen(LPCWSTR agent, DWORD access, LPCWSTR proxy, LPCWSTR bypass, DWORD flags)
static ULONG WINAPI BackgroundCopyFile_Release(IBackgroundCopyFile2 *iface)
#define BG_E_HTTP_ERROR_400
#define BG_E_HTTP_ERROR_401
#define WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
#define BG_E_HTTP_ERROR_414
#define WINHTTP_AUTH_TARGET_PROXY
BOOL processFile(BackgroundCopyFileImpl *file, BackgroundCopyJobImpl *job)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define WINHTTP_FLAG_ASYNC
static HRESULT WINAPI BackgroundCopyFile_GetRemoteName(IBackgroundCopyFile2 *iface, LPWSTR *pVal)
static HRESULT WINAPI BackgroundCopyFile_GetLocalName(IBackgroundCopyFile2 *iface, LPWSTR *pVal)
HINTERNET WINAPI WinHttpOpenRequest(HINTERNET hconnect, LPCWSTR verb, LPCWSTR object, LPCWSTR version, LPCWSTR referrer, LPCWSTR *types, DWORD flags)
static const WCHAR fileW[]
BOOL WINAPI WinHttpSendRequest(HINTERNET hrequest, LPCWSTR headers, DWORD headers_len, LPVOID optional, DWORD optional_len, DWORD total_len, DWORD_PTR context)
static UINT target_from_index(UINT index)
#define HeapFree(x, y, z)
static DWORD wait_for_completion(BackgroundCopyJobImpl *job)
BOOL WINAPI WinHttpReadData(HINTERNET hrequest, LPVOID buffer, DWORD to_read, LPDWORD read)
#define WINHTTP_AUTH_SCHEME_DIGEST
#define WINHTTP_AUTH_TARGET_SERVER