561 HWND hDlg = static_cast<DownloadParam*>(
param)->Dialog;
566 ULONG dwCurrentBytesRead = 0;
578 size_t urlLength, filenameLength;
581 LPCWSTR szCaption = static_cast<DownloadParam*>(
param)->szCaption;
592 for (iAppId = 0; iAppId < InfoArray.
GetSize(); ++iAppId)
619 switch(InfoArray[iAppId].DLType)
622 szNewCaption.
Format(szCaption, InfoArray[iAppId].
szName.GetString());
636 p =
wcsrchr(InfoArray[iAppId].szUrl.GetString(),
L'/');
637 q =
wcsrchr(InfoArray[iAppId].szUrl.GetString(),
L'?');
651 if (
q &&
q >
p && (
q -
p) > 0)
667 switch (InfoArray[iAppId].DLType)
677 Path.ReleaseBuffer();
719 memset(&urlComponents, 0,
sizeof(urlComponents));
722 urlLength = InfoArray[iAppId].szUrl.GetLength();
813 if (InfoArray[iAppId].SizeInBytes)
815 dwContentLen = InfoArray[iAppId].SizeInBytes;
826 #ifdef USE_CERT_PINNING 833 bool bAskQuestion =
false;
842 (
strcmp(issuerName, CERT_ISSUER_INFO_OLD) &&
843 strcmp(issuerName, CERT_ISSUER_INFO_NEW)))
868 dwCurrentBytesRead = 0;
883 dwCurrentBytesRead += dwBytesRead;
885 UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
893 DPRINT1(
"Operation cancelled\n");
902 dwContentLen = dwCurrentBytesRead;
904 UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
909 if ((InfoArray[iAppId].DLType ==
DLTYPE_APPLICATION) && InfoArray[iAppId].szSHA1[0] != 0)
916 DPRINT1(
"Unable to load string\n");
925 if (!
VerifyInteg(InfoArray[iAppId].szSHA1.GetString(),
Path.GetString()))
929 DPRINT1(
"Unable to load string\n");
946 shExInfo.
cbSize =
sizeof(shExInfo);
994 delete static_cast<DownloadParam*>(
param);
#define HTTP_QUERY_CONTENT_LENGTH
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
static const WCHAR szName[]
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved)
#define IDS_DL_DIALOG_DB_DOWNLOAD_DISP
BOOL VerifyInteg(LPCWSTR lpSHA1Hash, LPCWSTR lpFileName)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define SEE_MASK_NOCLOSEPROCESS
static BYTE subjectName[]
#define IDS_MISMATCH_CERT_INFO
BOOL ShowLastError(HWND hWndOwner, BOOL bInetError, DWORD dwLastError)
#define INTERNET_OPEN_TYPE_PROXY
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
void __cdecl Format(UINT nFormatID,...)
BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define IDS_UNABLE_TO_DOWNLOAD
#define INTERNET_FLAG_DONT_CACHE
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
#define IDC_DOWNLOAD_STATUS
WCHAR szDownloadDir[MAX_PATH]
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
HINTERNET WINAPI InternetOpenUrlW(HINTERNET hInternet, LPCWSTR lpszUrl, LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext)
int WINAPI MessageBoxA(_In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_ UINT)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID MessageBox_LoadString(HWND hMainWnd, INT StringID)
DWORD WINAPI FtpGetFileSize(HINTERNET hFile, LPDWORD lpdwFileSizeHigh)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define IDS_INTEG_CHECK_FAIL
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
static CDowloadingAppsListView DownloadsListView
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
VOID SetDownloadStatus(INT ItemIndex, DownloadStatus Status)
BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
SETTINGS_INFO SettingsInfo
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
#define IDS_UNABLE_TO_QUERY_CERT
VOID SetMarquee(BOOL Enable)
BOOL GetStorageDirectory(ATL::CStringW &lpDirectory)
GLdouble GLdouble GLdouble GLdouble q
#define INVALID_FILE_ATTRIBUTES
#define IDS_UNABLE_TO_DOWNLOAD2
#define IDC_DOWNLOAD_PROGRESS
static VOID UpdateProgress(HWND hDlg, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
#define INTERNET_OPEN_TYPE_DIRECT
BOOL WINAPI HttpQueryInfoW(HINTERNET hHttpRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
#define IDS_INTEG_CHECK_TITLE
#define IDS_DL_DIALOG_DB_UNOFFICIAL_DOWNLOAD_DISP
#define HTTP_QUERY_STATUS_CODE
#define INTERNET_FLAG_PASSIVE
#define INTERNET_FLAG_PRAGMA_NOCACHE
WCHAR szProxyServer[MAX_PATH]
PRTL_UNICODE_STRING_BUFFER Path
#define INTERNET_OPEN_TYPE_PRECONFIG
BOOL WINAPI InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumOfBytesToRead, LPDWORD pdwNumOfBytesRead)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HTTP_QUERY_FLAG_NUMBER
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
BOOL WINAPI InternetCrackUrlW(const WCHAR *lpszUrl, DWORD dwUrlLength, DWORD dwFlags, URL_COMPONENTSW *lpUC)
ATL::CStringW LoadStatusString(DownloadStatus StatusParam)
#define APPLICATION_DATABASE_NAME
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
int strcmp(const char *String1, const char *String2)
WCHAR szNoProxyFor[MAX_PATH]
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
static CDownloaderProgress ProgressBar
#define INTERNET_FLAG_KEEP_CONNECTION