windows-nt/Source/XPSP1/NT/enduser/windows.com/inc/download.h
2020-09-26 16:20:57 +08:00

88 lines
3.6 KiB
C++

#ifndef DOWNLOAD_H
#define DOWNLOAD_H
#include <iuprogress.h>
#define DOWNLOAD_STATUS_OK 0
#define DOWNLOAD_STATUS_ITEMCOMPLETE 1
#define DOWNLOAD_STATUS_ERROR 2
#define DOWNLOAD_STATUS_ABORTED 3
#define DOWNLOAD_STATUS_OPERATIONCOMPLETE 4
#define DOWNLOAD_STATUS_ITEMSTART 5
//---------------------------------------------------------------------------
//
// type definition for the parameters needed by callback function
//
class COperationMgr;
typedef struct _DOWNLOAD_CALLBACK_DATA
{
BSTR bstrOperationUuid;
HWND hEventFiringWnd;
IProgressListener* pProgressListener;
float flProgressPercentage; // Minimum Percentage Increment for Progress 0 == all progress
float flLastPercentage; // percentage value of the last progress callback
LONG lTotalDownloadSize; // estimated total download size
LONG lCurrentItemSize; // estimated current item size
LONG lTotalDownloaded; // total bytes downloaded so far
COperationMgr* pOperationMgr;
} DCB_DATA, *P_DCB_DATA;
//---------------------------------------------------------------------------
//
// type definition for the callback function
//
typedef BOOL (WINAPI * PFNDownloadCallback)(
VOID* pCallbackData,
DWORD dwStatus,
DWORD dwBytesTotal,
DWORD dwBlockSizeDownloaded, // Bytes Downloaded Since Last Callback.
BSTR bstrXmlData, // XML in bstr, used by itemstart/complete, otherwise NULL
LONG *lCommandRequest // return what callback function want to do:
// PAUSE (1) or CANCEL (3)
);
//---------------------------------------------------------------------------
//
// DownloadFile
// Implements the core downloader for IU. This is a single purpose downloader that is very generic,
// It does not attempt to decompress or checktrust anything it downloads.
//
// Progress Information is given for each block downloaded through the supplied callback function.
// Specifying a callback is optional. All callbacks are 'synchronous' and if not immediately
// returned will block all downloads in this object.
#define WUDF_DONTALLOWPROXY 0x00000001
#define WUDF_CHECKREQSTATUSONLY 0x00000002
#define WUDF_APPENDCACHEBREAKER 0x00000004
#define WUDF_DODOWNLOADRETRY 0x00000008
#define WUDF_SKIPCABVALIDATION 0x00000010
#define WUDF_SKIPAUTOPROXYCACHE 0x00000020
#define WUDF_PERSISTTRANSPORTDLL 0x00000040
#define WUDF_ALLOWWININETONLY 0x40000000
#define WUDF_ALLOWWINHTTPONLY 0x80000000
#define WUDF_TRANSPORTMASK (WUDF_ALLOWWINHTTPONLY | WUDF_ALLOWWININETONLY)
HRESULT DownloadFile(
LPCTSTR pszServerUrl, // full http url
LPCTSTR pszLocalPath, // local directory to download file to
LPCTSTR pszLocalFileName, // optional local file name to rename the downloaded file to
PDWORD pdwDownloadedBytes, // bytes downloaded for this file
HANDLE *hQuitEvents, // optional events causing this function to abort
UINT nQuitEventCount, // number of quit events, must be 0 if array is NULL
PFNDownloadCallback fpnCallback, // optional call back function
VOID* pCallbackData, // parameter for call back function to use
DWORD dwFlags = 0
);
#include "dllite.h"
#endif