1*4882a593Smuzhiyun #ifndef DEFINE_HEADER 2*4882a593Smuzhiyun #define DEFINE_HEADER 3*4882a593Smuzhiyun #ifndef _U 4*4882a593Smuzhiyun #define _U _CTYPE_U 5*4882a593Smuzhiyun #endif 6*4882a593Smuzhiyun #ifndef _L 7*4882a593Smuzhiyun #define _L _CTYPE_L 8*4882a593Smuzhiyun #endif 9*4882a593Smuzhiyun #ifndef _N 10*4882a593Smuzhiyun #define _N _CTYPE_L 11*4882a593Smuzhiyun #endif 12*4882a593Smuzhiyun #ifndef _X 13*4882a593Smuzhiyun #define _X _CTYPE_X 14*4882a593Smuzhiyun #endif 15*4882a593Smuzhiyun #ifndef _P 16*4882a593Smuzhiyun #define _P _CTYPE_P 17*4882a593Smuzhiyun #endif 18*4882a593Smuzhiyun #ifndef _B 19*4882a593Smuzhiyun #define _B _CTYPE_B 20*4882a593Smuzhiyun #endif 21*4882a593Smuzhiyun #ifndef _C 22*4882a593Smuzhiyun #define _C _CTYPE_C 23*4882a593Smuzhiyun #endif 24*4882a593Smuzhiyun #ifndef _S 25*4882a593Smuzhiyun #define _S _CTYPE_S 26*4882a593Smuzhiyun #endif 27*4882a593Smuzhiyun #include <stdio.h> 28*4882a593Smuzhiyun #include <stdlib.h> 29*4882a593Smuzhiyun #include <stdarg.h> 30*4882a593Smuzhiyun #include <string.h> 31*4882a593Smuzhiyun #include <sys/stat.h> 32*4882a593Smuzhiyun #include <sys/ioctl.h> 33*4882a593Smuzhiyun #include <fcntl.h> 34*4882a593Smuzhiyun #include <dirent.h> 35*4882a593Smuzhiyun #include <time.h> 36*4882a593Smuzhiyun #include <unistd.h> 37*4882a593Smuzhiyun //#include <iconv.h> 38*4882a593Smuzhiyun #include <wchar.h> 39*4882a593Smuzhiyun #include <errno.h> 40*4882a593Smuzhiyun #include <ctype.h> 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #include "Property.hpp" 43*4882a593Smuzhiyun #include <list> 44*4882a593Smuzhiyun #include <vector> 45*4882a593Smuzhiyun //#include <set> 46*4882a593Smuzhiyun #include <string> 47*4882a593Smuzhiyun #include <sstream> 48*4882a593Smuzhiyun #include <algorithm> 49*4882a593Smuzhiyun using namespace std; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun typedef unsigned int u_int32; 52*4882a593Smuzhiyun typedef unsigned char u_int8; 53*4882a593Smuzhiyun typedef unsigned char BYTE; 54*4882a593Smuzhiyun typedef signed char CHAR; 55*4882a593Smuzhiyun typedef BYTE *PBYTE; 56*4882a593Smuzhiyun typedef unsigned char UCHAR; 57*4882a593Smuzhiyun typedef unsigned short WCHAR; 58*4882a593Smuzhiyun typedef unsigned short USHORT; 59*4882a593Smuzhiyun typedef unsigned int UINT; 60*4882a593Smuzhiyun typedef unsigned int DWORD; 61*4882a593Smuzhiyun //#ifdef _UNICODE 62*4882a593Smuzhiyun // typedef wchar_t tchar; 63*4882a593Smuzhiyun // typedef wstring tstring; 64*4882a593Smuzhiyun // #define _T(x) L ## x 65*4882a593Smuzhiyun // #define _tcslen wcslen 66*4882a593Smuzhiyun // #define _tcscpy wcscpy 67*4882a593Smuzhiyun // #define _tcsicmp wcscmp 68*4882a593Smuzhiyun // #define _tcscmp wcscmp 69*4882a593Smuzhiyun // #define _stprintf swprintf 70*4882a593Smuzhiyun // #define _istprint iswprint 71*4882a593Smuzhiyun //#else 72*4882a593Smuzhiyun typedef char tchar; 73*4882a593Smuzhiyun typedef string tstring; 74*4882a593Smuzhiyun #define _T(x) x 75*4882a593Smuzhiyun #define _tcslen strlen 76*4882a593Smuzhiyun #define _tcscpy strcpy 77*4882a593Smuzhiyun #define _tcsicmp strcasecmp 78*4882a593Smuzhiyun #define _tcscmp strcmp 79*4882a593Smuzhiyun #define _stprintf sprintf 80*4882a593Smuzhiyun #define _istprint isprint 81*4882a593Smuzhiyun //#endif 82*4882a593Smuzhiyun typedef enum 83*4882a593Smuzhiyun { 84*4882a593Smuzhiyun RKNONE_DEVICE = 0, 85*4882a593Smuzhiyun RK27_DEVICE = 0x10, 86*4882a593Smuzhiyun RKCAYMAN_DEVICE, 87*4882a593Smuzhiyun RK28_DEVICE = 0x20, 88*4882a593Smuzhiyun RK281X_DEVICE, 89*4882a593Smuzhiyun RKPANDA_DEVICE, 90*4882a593Smuzhiyun RKNANO_DEVICE = 0x30, 91*4882a593Smuzhiyun RKSMART_DEVICE, 92*4882a593Smuzhiyun RKCROWN_DEVICE = 0x40, 93*4882a593Smuzhiyun RK29_DEVICE = 0x50, 94*4882a593Smuzhiyun RK292X_DEVICE, 95*4882a593Smuzhiyun RK30_DEVICE = 0x60, 96*4882a593Smuzhiyun RK30B_DEVICE, 97*4882a593Smuzhiyun RK31_DEVICE = 0x70, 98*4882a593Smuzhiyun RK32_DEVICE = 0x80 99*4882a593Smuzhiyun } ENUM_RKDEVICE_TYPE; 100*4882a593Smuzhiyun typedef enum 101*4882a593Smuzhiyun { 102*4882a593Smuzhiyun RK_OS = 0, 103*4882a593Smuzhiyun ANDROID_OS = 0x1 104*4882a593Smuzhiyun } ENUM_OS_TYPE; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun typedef enum 107*4882a593Smuzhiyun { 108*4882a593Smuzhiyun RKUSB_NONE = 0x0, 109*4882a593Smuzhiyun RKUSB_MASKROM = 0x01, 110*4882a593Smuzhiyun RKUSB_LOADER = 0x02, 111*4882a593Smuzhiyun RKUSB_MSC = 0x04 112*4882a593Smuzhiyun } ENUM_RKUSB_TYPE; 113*4882a593Smuzhiyun typedef enum 114*4882a593Smuzhiyun { 115*4882a593Smuzhiyun ENTRY471 = 1, 116*4882a593Smuzhiyun ENTRY472 = 2, 117*4882a593Smuzhiyun ENTRYLOADER = 4 118*4882a593Smuzhiyun } ENUM_RKBOOTENTRY; 119*4882a593Smuzhiyun #define MSC_ANDROID_OPER 0xFF 120*4882a593Smuzhiyun typedef enum 121*4882a593Smuzhiyun { 122*4882a593Smuzhiyun MSC_NONE_OPER = 0x0, 123*4882a593Smuzhiyun MSC_FORMAT_OPER = 0x1, 124*4882a593Smuzhiyun MSC_COPY_OPER = 0x2, 125*4882a593Smuzhiyun MSC_FORMAT_DATA_OPER = 0x4, 126*4882a593Smuzhiyun MSC_COPY_DATA_OPER = 0x8 127*4882a593Smuzhiyun } ENUM_MSC_OPER; 128*4882a593Smuzhiyun typedef enum 129*4882a593Smuzhiyun { 130*4882a593Smuzhiyun MISC_MODIFY_NONE = 0, 131*4882a593Smuzhiyun MISC_MODIFY_WIPE_ALL, 132*4882a593Smuzhiyun MISC_MODIFY_WIPE_DATA, 133*4882a593Smuzhiyun } ENUM_MISC_MODIFY_FLAG; 134*4882a593Smuzhiyun typedef enum 135*4882a593Smuzhiyun { 136*4882a593Smuzhiyun WF_UPGRADE = 1, 137*4882a593Smuzhiyun WF_RESTORE, 138*4882a593Smuzhiyun WF_GETOLDDISKSIZE, 139*4882a593Smuzhiyun WF_READSN, 140*4882a593Smuzhiyun WF_WRITESN, 141*4882a593Smuzhiyun WF_ERASEFLASH, 142*4882a593Smuzhiyun WF_ERASEIDB, 143*4882a593Smuzhiyun WF_GETBLOCKSTATE, 144*4882a593Smuzhiyun WF_READMAC, 145*4882a593Smuzhiyun WF_WRITEMAC, 146*4882a593Smuzhiyun WF_READBT, 147*4882a593Smuzhiyun WF_WRITEBT, 148*4882a593Smuzhiyun WF_READIMEI, 149*4882a593Smuzhiyun WF_WRITEIMEI, 150*4882a593Smuzhiyun WF_READUID, 151*4882a593Smuzhiyun WF_READCUSTOMDATA, 152*4882a593Smuzhiyun WF_WRITECUSTOMDATA, 153*4882a593Smuzhiyun WF_READALLINFO, 154*4882a593Smuzhiyun WF_WRITEALLINFO, 155*4882a593Smuzhiyun WF_DOWNLOADBOOT 156*4882a593Smuzhiyun } ENUM_WORKFLOW; 157*4882a593Smuzhiyun #pragma pack(1) 158*4882a593Smuzhiyun typedef struct 159*4882a593Smuzhiyun { 160*4882a593Smuzhiyun USHORT usYear; 161*4882a593Smuzhiyun BYTE ucMonth; 162*4882a593Smuzhiyun BYTE ucDay; 163*4882a593Smuzhiyun BYTE ucHour; 164*4882a593Smuzhiyun BYTE ucMinute; 165*4882a593Smuzhiyun BYTE ucSecond; 166*4882a593Smuzhiyun } STRUCT_RKTIME, *PSTRUCT_RKTIME; 167*4882a593Smuzhiyun typedef struct 168*4882a593Smuzhiyun { 169*4882a593Smuzhiyun char szItemName[20]; 170*4882a593Smuzhiyun UINT uiItemOffset; 171*4882a593Smuzhiyun UINT uiItemSize; 172*4882a593Smuzhiyun } STRUCT_PARAM_ITEM, *PSTRUCT_PARAM_ITEM; 173*4882a593Smuzhiyun typedef struct 174*4882a593Smuzhiyun { 175*4882a593Smuzhiyun char szItemName[20]; 176*4882a593Smuzhiyun char szItemValue[256]; 177*4882a593Smuzhiyun } STRUCT_CONFIG_ITEM, *PSTRUCT_CONFIG_ITEM; 178*4882a593Smuzhiyun typedef struct _STRUCT_RKDEVICE_DESC 179*4882a593Smuzhiyun { 180*4882a593Smuzhiyun USHORT usVid; 181*4882a593Smuzhiyun USHORT usPid; 182*4882a593Smuzhiyun USHORT usbcdUsb; 183*4882a593Smuzhiyun UINT uiLocationID; 184*4882a593Smuzhiyun ENUM_RKUSB_TYPE emUsbType; 185*4882a593Smuzhiyun ENUM_RKDEVICE_TYPE emDeviceType; 186*4882a593Smuzhiyun void *pUsbHandle; 187*4882a593Smuzhiyun } STRUCT_RKDEVICE_DESC, *PSTRUCT_RKDEVICE_DESC; 188*4882a593Smuzhiyun #pragma pack() 189*4882a593Smuzhiyun typedef list<STRUCT_RKDEVICE_DESC> RKDEVICE_DESC_SET; 190*4882a593Smuzhiyun typedef RKDEVICE_DESC_SET::iterator device_list_iter; 191*4882a593Smuzhiyun typedef vector<tstring> STRING_VECTOR; 192*4882a593Smuzhiyun typedef vector<UINT> UINT_VECTOR; 193*4882a593Smuzhiyun typedef vector<STRUCT_PARAM_ITEM> PARAM_ITEM_VECTOR; 194*4882a593Smuzhiyun typedef vector<STRUCT_CONFIG_ITEM> CONFIG_ITEM_VECTOR; 195*4882a593Smuzhiyun //typedef enum 196*4882a593Smuzhiyun //{ 197*4882a593Smuzhiyun // DOWNLOADBOOT_START=1, 198*4882a593Smuzhiyun // DOWNLOADBOOT_FAIL=2, 199*4882a593Smuzhiyun // DOWNLOADBOOT_PASS=3, 200*4882a593Smuzhiyun // DOWNLOADIDBLOCK_START=4, 201*4882a593Smuzhiyun // DOWNLOADIDBLOCK_FAIL=5, 202*4882a593Smuzhiyun // DOWNLOADIDBLOCK_PASS=6, 203*4882a593Smuzhiyun // DOWNLOADIMAGE_START=7, 204*4882a593Smuzhiyun // DOWNLOADIMAGE_FAIL=8, 205*4882a593Smuzhiyun // DOWNLOADIMAGE_PASS=9, 206*4882a593Smuzhiyun // TESTDEVICE_START=10, 207*4882a593Smuzhiyun // TESTDEVICE_FAIL=11, 208*4882a593Smuzhiyun // TESTDEVICE_PASS=12, 209*4882a593Smuzhiyun // RESETDEVICE_START=13, 210*4882a593Smuzhiyun // RESETDEVICE_FAIL=14, 211*4882a593Smuzhiyun // RESETDEVICE_PASS=15, 212*4882a593Smuzhiyun // FORMATDISK_START=16, 213*4882a593Smuzhiyun // FORMATDISK_FAIL=17, 214*4882a593Smuzhiyun // FORMATDISK_PASS=18, 215*4882a593Smuzhiyun // COPYDATA_START=19, 216*4882a593Smuzhiyun // COPYDATA_FAIL=20, 217*4882a593Smuzhiyun // COPYDATA_PASS=21, 218*4882a593Smuzhiyun // WAITMSC_START=22, 219*4882a593Smuzhiyun // WAITMSC_FAIL=23, 220*4882a593Smuzhiyun // WAITMSC_PASS=24, 221*4882a593Smuzhiyun // WAITLOADER_START=25, 222*4882a593Smuzhiyun // WAITLOADER_FAIL=26, 223*4882a593Smuzhiyun // WAITLOADER_PASS=27, 224*4882a593Smuzhiyun // WAITMASKROM_START=28, 225*4882a593Smuzhiyun // WAITMASKROM_FAIL=29, 226*4882a593Smuzhiyun // WAITMASKROM_PASS=30, 227*4882a593Smuzhiyun // ERASEIDB_START=31, 228*4882a593Smuzhiyun // ERASEIDB_FAIL=32, 229*4882a593Smuzhiyun // ERASEIDB_PASS=33, 230*4882a593Smuzhiyun // SWITCHMSC_START=34, 231*4882a593Smuzhiyun // SWITCHMSC_FAIL=35, 232*4882a593Smuzhiyun // SWITCHMSC_PASS=36, 233*4882a593Smuzhiyun // CHECKCHIP_START=37, 234*4882a593Smuzhiyun // CHECKCHIP_FAIL=38, 235*4882a593Smuzhiyun // CHECKCHIP_PASS=39, 236*4882a593Smuzhiyun // PREPAREIDB_START=40, 237*4882a593Smuzhiyun // PREPAREIDB_FAIL=41, 238*4882a593Smuzhiyun // PREPAREIDB_PASS=42, 239*4882a593Smuzhiyun // MUTEXRESETDEVICE_START=43, 240*4882a593Smuzhiyun // MUTEXRESETDEVICE_FAIL=44, 241*4882a593Smuzhiyun // MUTEXRESETDEVICE_PASS=45, 242*4882a593Smuzhiyun // GETOLDDISKSIZE_START=46, 243*4882a593Smuzhiyun // GETOLDDISKSIZE_FAIL=47, 244*4882a593Smuzhiyun // GETOLDDISKSIZE_PASS=48, 245*4882a593Smuzhiyun // READSN_START=49, 246*4882a593Smuzhiyun // READSN_FAIL=50, 247*4882a593Smuzhiyun // READSN_PASS=51, 248*4882a593Smuzhiyun // WRITESN_START=52, 249*4882a593Smuzhiyun // WRITESN_FAIL=53, 250*4882a593Smuzhiyun // WRITESN_PASS=54, 251*4882a593Smuzhiyun // ERASEALLBLOCKS_START=55, 252*4882a593Smuzhiyun // ERASEALLBLOCKS_FAIL=56, 253*4882a593Smuzhiyun // ERASEALLBLOCKS_PASS=57, 254*4882a593Smuzhiyun // GETBLOCKSTATE_START=58, 255*4882a593Smuzhiyun // GETBLOCKSTATE_FAIL=59, 256*4882a593Smuzhiyun // GETBLOCKSTATE_PASS=60, 257*4882a593Smuzhiyun // GETFLASHINFO_START=61, 258*4882a593Smuzhiyun // GETFLASHINFO_FAIL=62, 259*4882a593Smuzhiyun // GETFLASHINFO_PASS=63, 260*4882a593Smuzhiyun // WRITEBACK_START=64, 261*4882a593Smuzhiyun // WRITEBACK_FAIL=65, 262*4882a593Smuzhiyun // WRITEBACK_PASS=66, 263*4882a593Smuzhiyun // FINDUSERDISK_START=67, 264*4882a593Smuzhiyun // FINDUSERDISK_FAIL=68, 265*4882a593Smuzhiyun // FINDUSERDISK_PASS=69, 266*4882a593Smuzhiyun // SHOWUSERDISK_START=70, 267*4882a593Smuzhiyun // SHOWUSERDISK_FAIL=71, 268*4882a593Smuzhiyun // SHOWUSERDISK_PASS=72, 269*4882a593Smuzhiyun // READMAC_START=73, 270*4882a593Smuzhiyun // READMAC_FAIL=74, 271*4882a593Smuzhiyun // READMAC_PASS=75, 272*4882a593Smuzhiyun // WRITEMAC_START=76, 273*4882a593Smuzhiyun // WRITEMAC_FAIL=77, 274*4882a593Smuzhiyun // WRITEMAC_PASS=78, 275*4882a593Smuzhiyun // READBT_START=79, 276*4882a593Smuzhiyun // READBT_FAIL=80, 277*4882a593Smuzhiyun // READBT_PASS=81, 278*4882a593Smuzhiyun // WRITEBT_START=82, 279*4882a593Smuzhiyun // WRITEBT_FAIL=83, 280*4882a593Smuzhiyun // WRITEBT_PASS=84, 281*4882a593Smuzhiyun // LOWERFORMAT_START=85, 282*4882a593Smuzhiyun // LOWERFORMAT_FAIL=86, 283*4882a593Smuzhiyun // LOWERFORMAT_PASS=87, 284*4882a593Smuzhiyun // READIMEI_START=88, 285*4882a593Smuzhiyun // READIMEI_FAIL=89, 286*4882a593Smuzhiyun // READIMEI_PASS=90, 287*4882a593Smuzhiyun // WRITEIMEI_START=91, 288*4882a593Smuzhiyun // WRITEIMEI_FAIL=92, 289*4882a593Smuzhiyun // WRITEIMEI_PASS=93, 290*4882a593Smuzhiyun // SHOWDATADISK_START=94, 291*4882a593Smuzhiyun // SHOWDATADISK_FAIL=95, 292*4882a593Smuzhiyun // SHOWDATADISK_PASS=96, 293*4882a593Smuzhiyun // FINDDATADISK_START=97, 294*4882a593Smuzhiyun // FINDDATADISK_FAIL=98, 295*4882a593Smuzhiyun // FINDDATADISK_PASS=99, 296*4882a593Smuzhiyun // FORMATDATADISK_START=100, 297*4882a593Smuzhiyun // FORMATDATADISK_FAIL=101, 298*4882a593Smuzhiyun // FORMATDATADISK_PASS=102, 299*4882a593Smuzhiyun // COPYDATADISK_START=103, 300*4882a593Smuzhiyun // COPYDATADISK_FAIL=104, 301*4882a593Smuzhiyun // COPYDATADISK_PASS=105, 302*4882a593Smuzhiyun // READUID_START=106, 303*4882a593Smuzhiyun // READUID_FAIL=107, 304*4882a593Smuzhiyun // READUID_PASS=108, 305*4882a593Smuzhiyun // READCUSTOMDATA_START=109, 306*4882a593Smuzhiyun // READCUSTOMDATA_FAIL=110, 307*4882a593Smuzhiyun // READCUSTOMDATA_PASS=111, 308*4882a593Smuzhiyun // WRITECUSTOMDATA_START=112, 309*4882a593Smuzhiyun // WRITECUSTOMDATA_FAIL=113, 310*4882a593Smuzhiyun // WRITECUSTOMDATA_PASS=114, 311*4882a593Smuzhiyun // SETRESETFLAG_START=115, 312*4882a593Smuzhiyun // SETRESETFLAG_FAIL=116, 313*4882a593Smuzhiyun // SETRESETFLAG_PASS=117, 314*4882a593Smuzhiyun // POWEROFF_START=118, 315*4882a593Smuzhiyun // POWEROFF_FAIL=119, 316*4882a593Smuzhiyun // POWEROFF_PASS=120, 317*4882a593Smuzhiyun // READALLINFO_START=121, 318*4882a593Smuzhiyun // READALLINFO_FAIL=122, 319*4882a593Smuzhiyun // READALLINFO_PASS=123, 320*4882a593Smuzhiyun // WRITEALLINFO_START=124, 321*4882a593Smuzhiyun // WRITEALLINFO_FAIL=125, 322*4882a593Smuzhiyun // WRITEALLINFO_PASS=126, 323*4882a593Smuzhiyun // RESETMSC_START=127, 324*4882a593Smuzhiyun // RESETMSC_FAIL=128, 325*4882a593Smuzhiyun // RESETMSC_PASS=129 326*4882a593Smuzhiyun //}ENUM_UPGRADE_PROMPT; 327*4882a593Smuzhiyun //typedef enum 328*4882a593Smuzhiyun //{ 329*4882a593Smuzhiyun // TESTDEVICE_PROGRESS, 330*4882a593Smuzhiyun // DOWNLOADIMAGE_PROGRESS, 331*4882a593Smuzhiyun // CHECKIMAGE_PROGRESS, 332*4882a593Smuzhiyun // TAGBADBLOCK_PROGRESS, 333*4882a593Smuzhiyun // TESTBLOCK_PROGRESS, 334*4882a593Smuzhiyun // ERASEFLASH_PROGRESS, 335*4882a593Smuzhiyun // ERASESYSTEM_PROGRESS, 336*4882a593Smuzhiyun // LOWERFORMAT_PROGRESS, 337*4882a593Smuzhiyun // ERASEUSERDATA_PROGRESS 338*4882a593Smuzhiyun //}ENUM_PROGRESS_PROMPT; 339*4882a593Smuzhiyun //#define MSC_SWITCHROCKUSB 0xFFFFFFFE 340*4882a593Smuzhiyun //#define MSC_GETVERSIONINFO 0xFFFFFFFF 341*4882a593Smuzhiyun //#define MSC_RESETDEVICE 0xFFFFFFFD 342*4882a593Smuzhiyun //#define MSC_GETCHIPINFO 0xFFFFFFFC 343*4882a593Smuzhiyun //#define MSC_SHOWUSERDISK 0xFFFFFFFB 344*4882a593Smuzhiyun //#define MSC_GETDEVIVEUID 0xFFFFFFF7 345*4882a593Smuzhiyun //#define MSC_SHOWDATADISK 0xFFFFFFF6 346*4882a593Smuzhiyun //#define MSC_GETPRODUCTMODEL 0xFFFFFFF3 347*4882a593Smuzhiyun //#define MSC_GETPARAMETER 0xFFFFFFF2 348*4882a593Smuzhiyun //#define MSC_GETIDBSECTOR 0xFFFFFFF1 349*4882a593Smuzhiyun //#define MSC_GETPRODUCTSN 0xFFFFFFEF 350*4882a593Smuzhiyun //typedef enum 351*4882a593Smuzhiyun //{ 352*4882a593Smuzhiyun // CALL_FIRST, 353*4882a593Smuzhiyun // CALL_MIDDLE, 354*4882a593Smuzhiyun // CALL_LAST 355*4882a593Smuzhiyun //}ENUM_CALL_STEP; 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun //typedef void (*UpgradeStepPromptCB)(DWORD deviceLayer,ENUM_UPGRADE_PROMPT promptID,DWORD oldDeviceLayer); 358*4882a593Smuzhiyun //typedef void (*ProgressPromptCB)(DWORD deviceLayer,ENUM_PROGRESS_PROMPT promptID,long long totalValue,long long currentValue,ENUM_CALL_STEP emCall); 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun //bool WideStringToString(wchar_t *pszSrc,char *&pszDest); 361*4882a593Smuzhiyun //bool StringToWideString(char *pszSrc,wchar_t *&pszDest); 362*4882a593Smuzhiyun //bool transform(string &src,bool lowercase); 363*4882a593Smuzhiyun typedef void (*UpgradeCallbackFunc)(char *pszPrompt); 364*4882a593Smuzhiyun typedef void (*UpgradeProgressCallbackFunc)(float portion, float seconds); 365*4882a593Smuzhiyun #endif 366