mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[core] use GetTickCount64() always where possible
* Damn you XP!!! * Also some more code cleanup
This commit is contained in:
		
							parent
							
								
									d20eb9262b
								
							
						
					
					
						commit
						250d46e401
					
				
					 15 changed files with 67 additions and 54 deletions
				
			
		|  | @ -778,8 +778,8 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM | |||
| DWORD WINAPI SumThread(void* param) | ||||
| { | ||||
| 	HANDLE h = INVALID_HANDLE_VALUE; | ||||
| 	DWORD rSize = 0, LastRefresh = 0; | ||||
| 	uint64_t rb; | ||||
| 	DWORD rSize = 0; | ||||
| 	uint64_t rb, LastRefresh = 0; | ||||
| 	char buffer[4096]; | ||||
| 	SHA1_CONTEXT sha1_ctx; | ||||
| 	SHA256_CONTEXT sha256_ctx; | ||||
|  | @ -804,8 +804,8 @@ DWORD WINAPI SumThread(void* param) | |||
| 	md5_init(&md5_ctx); | ||||
| 
 | ||||
| 	for (rb = 0; ; rb += rSize) { | ||||
| 		if (GetTickCount() > LastRefresh + 25) { | ||||
| 			LastRefresh = GetTickCount(); | ||||
| 		if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 			LastRefresh = _GetTickCount64(); | ||||
| 			format_percent = (100.0f*rb) / (1.0f*img_report.projected_size); | ||||
| 			PrintInfo(0, MSG_271, format_percent); | ||||
| 			SendMessage(hProgress, PBM_SETPOS, (WPARAM)((format_percent/100.0f)*MAX_PROGRESS), 0); | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ | |||
| #include <string.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| 
 | ||||
| #include "dos.h" | ||||
|  | @ -325,7 +326,7 @@ static BOOL ExtractMSDOS(const char* path) | |||
| 		goto out; | ||||
| 
 | ||||
| 	// Sanity check
 | ||||
| 	if (DiskImageSize < 700*1024) { | ||||
| 	if (DiskImageSize < 700*KB) { | ||||
| 		uprintf("MS-DOS disk image is too small (%d bytes)\n", dllname, DiskImageSize); | ||||
| 		goto out; | ||||
| 	} | ||||
|  |  | |||
|  | @ -1189,7 +1189,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m | |||
| 		// This helps us reselect the partition scheme option that was used when creating the
 | ||||
| 		// drive in Rufus. As far as I can tell, Windows doesn't care much if this signature
 | ||||
| 		// isn't unique for USB drives.
 | ||||
| 		CreateDisk.Mbr.Signature = mbr_uefi_marker?MBR_UEFI_MARKER:GetTickCount(); | ||||
| 		CreateDisk.Mbr.Signature = mbr_uefi_marker?MBR_UEFI_MARKER:(DWORD)_GetTickCount64(); | ||||
| 
 | ||||
| 		DriveLayoutEx.PartitionStyle = PARTITION_STYLE_MBR; | ||||
| 		DriveLayoutEx.PartitionCount = 4;	// Must be multiple of 4 for MBR
 | ||||
|  |  | |||
							
								
								
									
										22
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								src/format.c
									
										
									
									
									
								
							|  | @ -55,7 +55,7 @@ | |||
|  */ | ||||
| DWORD FormatStatus; | ||||
| badblocks_report report; | ||||
| static DWORD LastRefresh; | ||||
| static uint64_t LastRefresh; | ||||
| static float format_percent = 0.0f; | ||||
| static int task_number = 0; | ||||
| extern const int nb_steps[FS_MAX]; | ||||
|  | @ -623,8 +623,8 @@ static BOOL FormatFAT32(DWORD DriveIndex) | |||
| 
 | ||||
| 	format_percent = 0.0f; | ||||
| 	for (i=0; i<(SystemAreaSize+BurstSize-1); i+=BurstSize) { | ||||
| 		if (GetTickCount() > LastRefresh + 25) { | ||||
| 			LastRefresh = GetTickCount(); | ||||
| 		if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 			LastRefresh = _GetTickCount64(); | ||||
| 			format_percent = (100.0f*i)/(1.0f*(SystemAreaSize+BurstSize)); | ||||
| 			PrintInfo(0, MSG_217, format_percent); | ||||
| 			UpdateProgress(OP_FORMAT, format_percent); | ||||
|  | @ -1460,8 +1460,8 @@ DWORD WINAPI CloseFormatPromptThread(LPVOID param) { | |||
| 
 | ||||
| void update_progress(const uint64_t processed_bytes) | ||||
| { | ||||
| 	if (GetTickCount() > LastRefresh + 25) { | ||||
| 		LastRefresh = GetTickCount(); | ||||
| 	if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 		LastRefresh = _GetTickCount64(); | ||||
| 		format_percent = (100.0f*processed_bytes)/(1.0f*img_report.projected_size); | ||||
| 		PrintInfo(0, MSG_261, format_percent); | ||||
| 		UpdateProgress(OP_FORMAT, format_percent); | ||||
|  | @ -1613,8 +1613,8 @@ DWORD WINAPI FormatThread(void* param) | |||
| 		// http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747.aspx does buffer sector alignment
 | ||||
| 		aligned_buffer = ((void *)((((uintptr_t)(buffer)) + (SectorSize)-1) & (~(((uintptr_t)(SectorSize)) - 1)))); | ||||
| 		for (wb = 0, wSize = 0; wb < (uint64_t)SelectedDrive.DiskSize; wb += wSize) { | ||||
| 			if (GetTickCount() > LastRefresh + 25) { | ||||
| 				LastRefresh = GetTickCount(); | ||||
| 			if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 				LastRefresh = _GetTickCount64(); | ||||
| 				format_percent = (100.0f*wb) / (1.0f*SelectedDrive.DiskSize); | ||||
| 				PrintInfo(0, MSG_286, format_percent); | ||||
| 				UpdateProgress(OP_FORMAT, format_percent); | ||||
|  | @ -1762,8 +1762,8 @@ DWORD WINAPI FormatThread(void* param) | |||
| 				} | ||||
| 				if (rSize == 0) | ||||
| 					break; | ||||
| 				if (GetTickCount() > LastRefresh + 25) { | ||||
| 					LastRefresh = GetTickCount(); | ||||
| 				if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 					LastRefresh = _GetTickCount64(); | ||||
| 					format_percent = (100.0f*wb)/(1.0f*img_report.projected_size); | ||||
| 					PrintInfo(0, MSG_261, format_percent); | ||||
| 					UpdateProgress(OP_FORMAT, format_percent); | ||||
|  | @ -2084,8 +2084,8 @@ DWORD WINAPI SaveImageThread(void* param) | |||
| 		} | ||||
| 		if (rSize == 0) | ||||
| 			break; | ||||
| 		if (GetTickCount() > LastRefresh + 25) { | ||||
| 			LastRefresh = GetTickCount(); | ||||
| 		if (_GetTickCount64() > LastRefresh + 25) { | ||||
| 			LastRefresh = _GetTickCount64(); | ||||
| 			format_percent = (100.0f*wb)/(1.0f*SelectedDrive.DiskSize); | ||||
| 			PrintInfo(0, MSG_261, format_percent); | ||||
| 			UpdateProgress(OP_FORMAT, format_percent); | ||||
|  |  | |||
|  | @ -28,6 +28,7 @@ | |||
| #include <string.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| #include "msapi_utf8.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -446,7 +446,7 @@ static void CALLBACK OutputMessageTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent | |||
| 	KillTimer(hMainDialog, idEvent); | ||||
| 	bOutputTimerArmed[i] = FALSE; | ||||
| 	PrintMessage[i](output_msg[i]); | ||||
| 	last_msg_time[i] = GetTickCount64(); | ||||
| 	last_msg_time[i] = _GetTickCount64(); | ||||
| } | ||||
| 
 | ||||
| static void OutputMessage(BOOL info, char* msg) | ||||
|  | @ -459,7 +459,7 @@ static void OutputMessage(BOOL info, char* msg) | |||
| 		output_msg[i] = msg; | ||||
| 	} else { | ||||
| 		// Find if we need to arm a timer
 | ||||
| 		delta = GetTickCount64() - last_msg_time[i]; | ||||
| 		delta = _GetTickCount64() - last_msg_time[i]; | ||||
| 		if (delta < MSG_DELAY) { | ||||
| 			// Not enough time has elapsed since our last output => arm a timer
 | ||||
| 			output_msg[i] = msg; | ||||
|  | @ -467,7 +467,7 @@ static void OutputMessage(BOOL info, char* msg) | |||
| 			bOutputTimerArmed[i] = TRUE; | ||||
| 		} else { | ||||
| 			PrintMessage[i](msg); | ||||
| 			last_msg_time[i] = GetTickCount64(); | ||||
| 			last_msg_time[i] = _GetTickCount64(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -51,6 +51,12 @@ static __inline void *_reallocf(void *ptr, size_t size) { | |||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| /* Why oh why does Microsoft have to make everybody suffer with their braindead use of Unicode? */ | ||||
| #define _RT_ICON			MAKEINTRESOURCEA(3) | ||||
| #define _RT_DIALOG			MAKEINTRESOURCEA(5) | ||||
| #define _RT_RCDATA			MAKEINTRESOURCEA(10) | ||||
| #define _RT_GROUP_ICON		MAKEINTRESOURCEA((ULONG_PTR)(MAKEINTRESOURCEA(3) + 11)) | ||||
| 
 | ||||
| /* UI redefinitions for WDK and MinGW */ | ||||
| #ifndef PBM_SETSTATE | ||||
| #define PBM_SETSTATE (WM_USER+16) | ||||
|  | @ -212,3 +218,13 @@ typedef struct _ATTACH_VIRTUAL_DISK_PARAMETERS { | |||
| #if !defined(ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY) | ||||
| #define ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY (INTERNET_ERROR_BASE + 174) | ||||
| #endif | ||||
| 
 | ||||
| /* Clang/MinGW32 has an issue with intptr_t */ | ||||
| #ifndef _UINTPTR_T_DEFINED | ||||
| #define _UINTPTR_T_DEFINED | ||||
| #ifdef _WIN64 | ||||
| typedef unsigned __int64 uintptr_t; | ||||
| #else | ||||
| typedef unsigned int uintptr_t; | ||||
| #endif | ||||
| #endif | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ | |||
| #include <inttypes.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| #include "msapi_utf8.h" | ||||
| #include "localization.h" | ||||
|  | @ -38,7 +39,7 @@ | |||
| #include "settings.h" | ||||
| 
 | ||||
| /* Maximum download chunk size, in bytes */ | ||||
| #define DOWNLOAD_BUFFER_SIZE    10240 | ||||
| #define DOWNLOAD_BUFFER_SIZE    10*KB | ||||
| /* Default delay between update checks (1 day) */ | ||||
| #define DEFAULT_UPDATE_INTERVAL (24*3600) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										13
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -94,6 +94,7 @@ OPENED_LIBRARIES_VARS; | |||
| HINSTANCE hMainInstance; | ||||
| HWND hMainDialog, hLangToolbar = NULL, hUpdatesDlg = NULL; | ||||
| MY_BUTTON_IMAGELIST bi_iso = { 0 }, bi_up = { 0 }, bi_down = { 0 }; | ||||
| GetTickCount64_t pfGetTickCount64 = NULL; | ||||
| char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH], sysnative_dir[MAX_PATH]; | ||||
| char* image_path = NULL; | ||||
| float fScale = 1.0f; | ||||
|  | @ -2038,7 +2039,8 @@ void SaveVHD(void) | |||
|  */ | ||||
| static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||
| { | ||||
| 	static DWORD DeviceNum = 0, LastRefresh = 0; | ||||
| 	static DWORD DeviceNum = 0; | ||||
| 	static uint64_t LastRefresh = 0; | ||||
| 	static BOOL first_log_display = TRUE, isMarquee = FALSE; | ||||
| 	static ULONG ulRegister = 0; | ||||
| 	static LPITEMIDLIST pidlDesktop = NULL; | ||||
|  | @ -2078,15 +2080,15 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 			case DBT_DEVICEARRIVAL: | ||||
| 			case DBT_DEVICEREMOVECOMPLETE: | ||||
| 			case DBT_CUSTOMEVENT:	// Sent by our timer refresh function or for card reader media change
 | ||||
| 				LastRefresh = GetTickCount();	// Don't care about 49.7 days rollback of GetTickCount()
 | ||||
| 				LastRefresh = _GetTickCount64(); | ||||
| 				KillTimer(hMainDialog, TID_REFRESH_TIMER); | ||||
| 				GetUSBDevices((DWORD)ComboBox_GetItemData(hDeviceList, ComboBox_GetCurSel(hDeviceList))); | ||||
| 				user_changed_label = FALSE; | ||||
| 				return (INT_PTR)TRUE; | ||||
| 			case DBT_DEVNODES_CHANGED: | ||||
| 				// If it's been more than a second since last device refresh, arm a refresh timer
 | ||||
| 				if (GetTickCount() > LastRefresh + 1000) { | ||||
| 					LastRefresh = GetTickCount(); | ||||
| 				if (_GetTickCount64() > LastRefresh + 1000) { | ||||
| 					LastRefresh = _GetTickCount64(); | ||||
| 					SetTimer(hMainDialog, TID_REFRESH_TIMER, 1000, RefreshTimer); | ||||
| 				} | ||||
| 				break; | ||||
|  | @ -2789,6 +2791,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| #endif | ||||
| 
 | ||||
| 	uprintf("*** " APPLICATION_NAME " init ***\n"); | ||||
| 	PF_INIT(GetTickCount64, kernel32); | ||||
| 
 | ||||
| 	// Reattach the console, if we were started from commandline
 | ||||
| 	if (AttachConsole(ATTACH_PARENT_PROCESS) != 0) { | ||||
|  | @ -3009,7 +3012,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | |||
| 				uprintf("Failed to enable AutoMount"); | ||||
| 		} | ||||
| 	} | ||||
| 	srand((unsigned int)GetTickCount()); | ||||
| 	srand((unsigned int)_GetTickCount64()); | ||||
| 
 | ||||
| relaunch: | ||||
| 	uprintf("localization: using locale '%s'\n", selected_locale->txt[0]); | ||||
|  |  | |||
							
								
								
									
										21
									
								
								src/rufus.h
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/rufus.h
									
										
									
									
									
								
							|  | @ -23,7 +23,7 @@ | |||
| #if defined(_MSC_VER) | ||||
| // Disable some VS2012 Code Analysis warnings
 | ||||
| #pragma warning(disable: 4996)		// Ignore deprecated (eg. GetVersionEx()), as we have to contend with XP
 | ||||
| #pragma warning(disable: 28159)		// VS2012 wants us to use GetTickCount64(), but it's not available on XP
 | ||||
| #pragma warning(disable: 28159)		// We use GetTickCount64() where possible, but it's not available on XP
 | ||||
| #pragma warning(disable: 6258)		// I know what I'm using TerminateThread for
 | ||||
| #endif | ||||
| 
 | ||||
|  | @ -537,16 +537,6 @@ static __inline HMODULE GetLibraryHandle(char* szLibraryName) { | |||
| 	if (pf##proc == NULL) {uprintf("Unable to locate %s() in %s.dll: %s\n",  \ | ||||
| 	#proc, #name, WindowsErrorString()); goto out;} } while(0) | ||||
| 
 | ||||
| /* Clang/MinGW32 has an issue with intptr_t */ | ||||
| #ifndef _UINTPTR_T_DEFINED | ||||
| #define _UINTPTR_T_DEFINED | ||||
| #ifdef _WIN64 | ||||
|   typedef unsigned __int64 uintptr_t; | ||||
| #else | ||||
|   typedef unsigned int uintptr_t; | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| /* Custom application errors */ | ||||
| #define FAC(f)                         (f<<16) | ||||
| #define APPERR(err)                    (APPLICATION_ERROR_MASK|err) | ||||
|  | @ -563,8 +553,7 @@ static __inline HMODULE GetLibraryHandle(char* szLibraryName) { | |||
| #define ERROR_CANT_ASSIGN_LETTER       0x120B | ||||
| #define ERROR_CANT_MOUNT_VOLUME        0x120C | ||||
| 
 | ||||
| /* Why oh why does Microsoft have to make everybody suffer with their braindead use of Unicode? */ | ||||
| #define _RT_ICON			MAKEINTRESOURCEA(3) | ||||
| #define _RT_DIALOG			MAKEINTRESOURCEA(5) | ||||
| #define _RT_RCDATA			MAKEINTRESOURCEA(10) | ||||
| #define _RT_GROUP_ICON		MAKEINTRESOURCEA((ULONG_PTR)(MAKEINTRESOURCEA(3) + 11)) | ||||
| /* GetTickCount64 not being available on XP is a massive bother */ | ||||
| PF_TYPE(WINAPI, ULONGLONG, GetTickCount64, (void)); | ||||
| extern GetTickCount64_t pfGetTickCount64; | ||||
| #define _GetTickCount64() ((pfGetTickCount64 != NULL)?(uint64_t)pfGetTickCount64():(uint64_t)GetTickCount()) | ||||
|  |  | |||
							
								
								
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | |||
| IDD_DIALOG DIALOGEX 12, 12, 242, 376 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_ACCEPTFILES | ||||
| CAPTION "Rufus 2.8.866" | ||||
| CAPTION "Rufus 2.8.867" | ||||
| FONT 8, "Segoe UI Symbol", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     LTEXT           "Device",IDS_DEVICE_TXT,9,6,200,8 | ||||
|  | @ -320,8 +320,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 2,8,866,0 | ||||
|  PRODUCTVERSION 2,8,866,0 | ||||
|  FILEVERSION 2,8,867,0 | ||||
|  PRODUCTVERSION 2,8,867,0 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -338,13 +338,13 @@ BEGIN | |||
|         BEGIN | ||||
|             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "2.8.866" | ||||
|             VALUE "FileVersion", "2.8.867" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||
|             VALUE "OriginalFilename", "rufus.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "2.8.866" | ||||
|             VALUE "ProductVersion", "2.8.867" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ extern char* ini_file; | |||
| #define SETTING_LAST_UPDATE                 "LastUpdateCheck" | ||||
| #define SETTING_UPDATE_INTERVAL             "UpdateCheckInterval" | ||||
| #define SETTING_INCLUDE_BETAS               "CheckForBetas" | ||||
| #define SETTING_COMM_CHECK                  "CommCheck" | ||||
| #define SETTING_COMM_CHECK                  "CommCheck64" | ||||
| #define SETTING_LOCALE                      "Locale" | ||||
| #define SETTING_DISABLE_LGP                 "DisableLGP" | ||||
| 
 | ||||
|  |  | |||
|  | @ -35,6 +35,7 @@ | |||
| #include <richedit.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| #include "msapi_utf8.h" | ||||
| #include "localization.h" | ||||
|  | @ -1358,14 +1359,14 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l | |||
| BOOL SetUpdateCheck(void) | ||||
| { | ||||
| 	BOOL enable_updates; | ||||
| 	DWORD commcheck = GetTickCount(); | ||||
| 	uint64_t commcheck = _GetTickCount64(); | ||||
| 	notification_info more_info = { IDD_UPDATE_POLICY, UpdateCallback }; | ||||
| 	char filename[MAX_PATH] = "", exename[] = APPLICATION_NAME ".exe"; | ||||
| 	size_t fn_len, exe_len; | ||||
| 
 | ||||
| 	// Test if we can read and write settings. If not, forget it.
 | ||||
| 	WriteSetting32(SETTING_COMM_CHECK, commcheck); | ||||
| 	if (ReadSetting32(SETTING_COMM_CHECK) != commcheck) | ||||
| 	WriteSetting64(SETTING_COMM_CHECK, commcheck); | ||||
| 	if (ReadSetting64(SETTING_COMM_CHECK) != commcheck) | ||||
| 		return FALSE; | ||||
| 	settings_commcheck = TRUE; | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ | |||
| #include <ctype.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| #include "msapi_utf8.h" | ||||
| #include "localization.h" | ||||
|  |  | |||
|  | @ -103,7 +103,7 @@ static char sevenzip_path[MAX_PATH]; | |||
| static const char conectix_str[] = VHD_FOOTER_COOKIE; | ||||
| static uint32_t wim_nb_files, wim_proc_files; | ||||
| static BOOL count_files; | ||||
| static DWORD LastRefresh; | ||||
| static uint64_t LastRefresh; | ||||
| 
 | ||||
| static BOOL Get7ZipPath(void) | ||||
| { | ||||
|  | @ -573,12 +573,12 @@ DWORD WINAPI WimProgressCallback(DWORD dwMsgId, WPARAM wParam, LPARAM lParam, PV | |||
| 			wim_nb_files++; | ||||
| 		} else { | ||||
| 			wim_proc_files++; | ||||
| 			if (GetTickCount() > LastRefresh + 100) { | ||||
| 			if (_GetTickCount64() > LastRefresh + 100) { | ||||
| 				// At the end of an actual apply, the WIM API re-lists a bunch of directories it
 | ||||
| 				// already processed, so we end up with more entries than counted - ignore those.
 | ||||
| 				if (wim_proc_files > wim_nb_files) | ||||
| 					wim_proc_files = wim_nb_files; | ||||
| 				LastRefresh = GetTickCount(); | ||||
| 				LastRefresh = _GetTickCount64(); | ||||
| 				// x^3 progress, so as not to give a better idea right from the onset
 | ||||
| 				// as to the dismal speed with which the WIM API can actually apply files...
 | ||||
| 				apply_percent = 4.636942595f * ((float)wim_proc_files) / ((float)wim_nb_files); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue