mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[ntfs] add bootable NTFS support
* NTFS boot records in ms-sys * also added debug duplication to PrintMessage * also fixed controls staying enabled during formatting
This commit is contained in:
		
							parent
							
								
									bb0c0ecb1c
								
							
						
					
					
						commit
						d1e4ba278b
					
				
					 17 changed files with 534 additions and 47 deletions
				
			
		|  | @ -1,8 +1,12 @@ | ||||||
| /* Option for Visual Studio and WDK compilation  */ | /* Option for Visual Studio and WDK compilation  */ | ||||||
| /* For MinGW, use "./configure <option>" instead */ | /* For MinGW, use "./configure <option>" instead */ | ||||||
| 
 | 
 | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | 
 | ||||||
| /* Embed FreeDOS files and allow FreeDOS support */ | /* Embed FreeDOS files and allow FreeDOS support */ | ||||||
| #define WITH_FREEDOS | #define WITH_FREEDOS | ||||||
| 
 | 
 | ||||||
| /* SysLinux support, for ISO -> bootable USB */ | /* SysLinux support, for ISO -> bootable USB */ | ||||||
| #define WITH_SYSLINUX | #define WITH_SYSLINUX | ||||||
|  | 
 | ||||||
|  | #endif /* _MSC_VER */ | ||||||
|  |  | ||||||
|  | @ -324,7 +324,7 @@ static void print_status(void) | ||||||
| 	percent = calc_percent((unsigned long) currently_testing, | 	percent = calc_percent((unsigned long) currently_testing, | ||||||
| 					(unsigned long) num_blocks); | 					(unsigned long) num_blocks); | ||||||
| 	percent = (percent/2.0f) + ((cur_op==OP_READ)? 50.0f : 0.0f); | 	percent = (percent/2.0f) + ((cur_op==OP_READ)? 50.0f : 0.0f); | ||||||
| 	PrintStatus(0, "Bad Blocks: PASS %d/%d - %0.2f%% (%d/%d/%d errors)", | 	PrintStatus(0, FALSE, "Bad Blocks: PASS %d/%d - %0.2f%% (%d/%d/%d errors)", | ||||||
| 				cur_pattern, nr_pattern, | 				cur_pattern, nr_pattern, | ||||||
| 				percent,  | 				percent,  | ||||||
| 				num_read_errors, | 				num_read_errors, | ||||||
|  | @ -355,8 +355,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern, | ||||||
| 		for (ptr = buffer; ptr < buffer + n; ptr++) { | 		for (ptr = buffer; ptr < buffer + n; ptr++) { | ||||||
| 			(*ptr) = rand() % (1 << (8 * sizeof(char))); | 			(*ptr) = rand() % (1 << (8 * sizeof(char))); | ||||||
| 		} | 		} | ||||||
| 		PrintStatus(3500, "Bad Blocks: Testing with random pattern."); | 		PrintStatus(3500, TRUE, "Bad Blocks: Testing with random pattern."); | ||||||
| 		uprintf("Bad Blocks: Testing with random pattern."); |  | ||||||
| 	} else { | 	} else { | ||||||
| 		bpattern[0] = 0; | 		bpattern[0] = 0; | ||||||
| 		for (i = 0; i < sizeof(bpattern); i++) { | 		for (i = 0; i < sizeof(bpattern); i++) { | ||||||
|  | @ -373,8 +372,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern, | ||||||
| 			else | 			else | ||||||
| 				i--; | 				i--; | ||||||
| 		} | 		} | ||||||
| 		PrintStatus(3500, "Bad Blocks: Testing with pattern 0x%02X.", bpattern[i]); | 		PrintStatus(3500, TRUE, "Bad Blocks: Testing with pattern 0x%02X.", bpattern[i]); | ||||||
| 		uprintf("Bad Blocks: Testing with pattern 0x%02X.", bpattern[i]); |  | ||||||
| 		cur_pattern++; | 		cur_pattern++; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										41
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										41
									
								
								src/format.c
									
										
									
									
									
								
							|  | @ -35,6 +35,7 @@ | ||||||
| #include "br.h" | #include "br.h" | ||||||
| #include "fat16.h" | #include "fat16.h" | ||||||
| #include "fat32.h" | #include "fat32.h" | ||||||
|  | #include "ntfs.h" | ||||||
| #include "partition_info.h" | #include "partition_info.h" | ||||||
| #include "file.h" | #include "file.h" | ||||||
| #include "format.h" | #include "format.h" | ||||||
|  | @ -63,19 +64,17 @@ static BOOLEAN __stdcall FormatExCallback(FILE_SYSTEM_CALLBACK_COMMAND Command, | ||||||
| 	switch(Command) { | 	switch(Command) { | ||||||
| 	case FCC_PROGRESS: | 	case FCC_PROGRESS: | ||||||
| 		percent = (DWORD*)pData; | 		percent = (DWORD*)pData; | ||||||
| 		PrintStatus(0, "Formatting: %d%% completed.\n", *percent); | 		PrintStatus(0, FALSE, "Formatting: %d%% completed.", *percent); | ||||||
| //		uprintf("%d percent completed.\n", *percent);
 | //		uprintf("%d percent completed.\n", *percent);
 | ||||||
| 		UpdateProgress(OP_FORMAT, 1.0f * (*percent)); | 		UpdateProgress(OP_FORMAT, 1.0f * (*percent)); | ||||||
| 		break; | 		break; | ||||||
| 	case FCC_STRUCTURE_PROGRESS:	// No progress on quick format
 | 	case FCC_STRUCTURE_PROGRESS:	// No progress on quick format
 | ||||||
| 		PrintStatus(0, "Creating file system: Task %d/%d completed.\n", ++task_number, nb_steps[fs_index]); | 		PrintStatus(0, TRUE, "Creating file system: Task %d/%d completed.", ++task_number, nb_steps[fs_index]); | ||||||
| 		uprintf("Create FS: Task %d/%d completed.\n", task_number, nb_steps[fs_index]); |  | ||||||
| 		format_percent += 100.0f / (1.0f * nb_steps[fs_index]); | 		format_percent += 100.0f / (1.0f * nb_steps[fs_index]); | ||||||
| 		UpdateProgress(OP_CREATE_FS, format_percent); | 		UpdateProgress(OP_CREATE_FS, format_percent); | ||||||
| 		break; | 		break; | ||||||
| 	case FCC_DONE: | 	case FCC_DONE: | ||||||
| 		PrintStatus(0, "Creating file system: Task %d/%d completed.\n", nb_steps[fs_index], nb_steps[fs_index]); | 		PrintStatus(0, TRUE, "Creating file system: Task %d/%d completed.", nb_steps[fs_index], nb_steps[fs_index]); | ||||||
| 		uprintf("Create FS: Task %d/%d completed.\n", nb_steps[fs_index], nb_steps[fs_index]); |  | ||||||
| 		UpdateProgress(OP_CREATE_FS, 100.0f); | 		UpdateProgress(OP_CREATE_FS, 100.0f); | ||||||
| 		if(*(BOOLEAN*)pData == FALSE) { | 		if(*(BOOLEAN*)pData == FALSE) { | ||||||
| 			uprintf("Error while formatting.\n"); | 			uprintf("Error while formatting.\n"); | ||||||
|  | @ -150,7 +149,7 @@ static BOOL FormatDrive(char DriveLetter) | ||||||
| 	size_t i; | 	size_t i; | ||||||
| 
 | 
 | ||||||
| 	wDriveRoot[0] = (WCHAR)DriveLetter; | 	wDriveRoot[0] = (WCHAR)DriveLetter; | ||||||
| 	PrintStatus(0, "Formatting..."); | 	PrintStatus(0, TRUE, "Formatting..."); | ||||||
| 	PF_INIT_OR_OUT(FormatEx, fmifs); | 	PF_INIT_OR_OUT(FormatEx, fmifs); | ||||||
| 
 | 
 | ||||||
| 	GetWindowTextW(hFileSystem, wFSType, ARRAYSIZE(wFSType)); | 	GetWindowTextW(hFileSystem, wFSType, ARRAYSIZE(wFSType)); | ||||||
|  | @ -340,7 +339,9 @@ static BOOL WritePBR(HANDLE hLogicalVolume, BOOL bFreeDOS) | ||||||
| 		uprintf("Confirmed new volume has a FAT16 boot sector\n"); | 		uprintf("Confirmed new volume has a FAT16 boot sector\n"); | ||||||
| 		if (bFreeDOS) { | 		if (bFreeDOS) { | ||||||
| 			if (!write_fat_16_fd_br(&fake_fd, 0)) break; | 			if (!write_fat_16_fd_br(&fake_fd, 0)) break; | ||||||
| 		} else if (!write_fat_16_br(&fake_fd, 0)) break; | 		} else { | ||||||
|  | 			if (!write_fat_16_br(&fake_fd, 0)) break; | ||||||
|  | 		} | ||||||
| 		// Disk Drive ID needs to be corrected on XP
 | 		// Disk Drive ID needs to be corrected on XP
 | ||||||
| 		if (!write_partition_physical_disk_drive_id_fat16(&fake_fd)) | 		if (!write_partition_physical_disk_drive_id_fat16(&fake_fd)) | ||||||
| 			break; | 			break; | ||||||
|  | @ -362,6 +363,16 @@ static BOOL WritePBR(HANDLE hLogicalVolume, BOOL bFreeDOS) | ||||||
| 			fake_fd._cnt += 6 * (int)SelectedDrive.Geometry.BytesPerSector; | 			fake_fd._cnt += 6 * (int)SelectedDrive.Geometry.BytesPerSector; | ||||||
| 		} | 		} | ||||||
| 		return TRUE; | 		return TRUE; | ||||||
|  | 	case FS_NTFS: | ||||||
|  | 		if (!is_ntfs_fs(&fake_fd)) { | ||||||
|  | 			uprintf("New volume does not have an NTFS boot sector\n"); | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 		uprintf("Confirmed new volume has an NTFS boot sector\n"); | ||||||
|  | 		if (!write_ntfs_br(&fake_fd)) break; | ||||||
|  | 		// Note: NTFS requires a full remount after writing the PBR. We dismount when we lock
 | ||||||
|  | 		// so that's not an issue, but if you don't remount, you don't boot!
 | ||||||
|  | 		return TRUE; | ||||||
| 	default: | 	default: | ||||||
| 		uprintf("unsupported FS for FS BR processing\n"); | 		uprintf("unsupported FS for FS BR processing\n"); | ||||||
| 		break; | 		break; | ||||||
|  | @ -407,6 +418,7 @@ void __cdecl FormatThread(void* param) | ||||||
| 		goto out; | 		goto out; | ||||||
| 	} | 	} | ||||||
| 	UnmountDrive(hLogicalVolume); | 	UnmountDrive(hLogicalVolume); | ||||||
|  | 	// TODO: DeleteVolumeMountPoint (and GetVolumeNameForVolumeMountPoint unless the GUID changes)
 | ||||||
| 
 | 
 | ||||||
| 	AnalyzeMBR(hPhysicalDrive); | 	AnalyzeMBR(hPhysicalDrive); | ||||||
| 	AnalyzePBR(hLogicalVolume); | 	AnalyzePBR(hLogicalVolume); | ||||||
|  | @ -495,7 +507,7 @@ void __cdecl FormatThread(void* param) | ||||||
| 		goto out; | 		goto out; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	PrintStatus(0, "Writing master boot record...\n"); | 	PrintStatus(0, TRUE, "Writing master boot record..."); | ||||||
| 	if (!WriteMBR(hPhysicalDrive)) { | 	if (!WriteMBR(hPhysicalDrive)) { | ||||||
| 		// Errorcode has already been set
 | 		// Errorcode has already been set
 | ||||||
| 		goto out; | 		goto out; | ||||||
|  | @ -506,6 +518,7 @@ void __cdecl FormatThread(void* param) | ||||||
| 		switch (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType))) { | 		switch (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType))) { | ||||||
| 		case DT_FREEDOS: | 		case DT_FREEDOS: | ||||||
| 		case DT_WINME: | 		case DT_WINME: | ||||||
|  | 		case DT_ISO: | ||||||
| 			// We still have a lock, which we need to modify the volume boot record 
 | 			// We still have a lock, which we need to modify the volume boot record 
 | ||||||
| 			// => no need to reacquire the lock...
 | 			// => no need to reacquire the lock...
 | ||||||
| 			hLogicalVolume = GetDriveHandle(num, drive_name, TRUE, FALSE); | 			hLogicalVolume = GetDriveHandle(num, drive_name, TRUE, FALSE); | ||||||
|  | @ -514,7 +527,11 @@ void __cdecl FormatThread(void* param) | ||||||
| 				FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OPEN_FAILED; | 				FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OPEN_FAILED; | ||||||
| 				goto out; | 				goto out; | ||||||
| 			} | 			} | ||||||
| 			PrintStatus(0, "Writing partition boot record...\n"); | 			// Make sure the volume is dismounted before writing the PBR
 | ||||||
|  | 			// This is especially critical, as NTFS will only be made bootable
 | ||||||
|  | 			// after the FS is re-mounted by Windows
 | ||||||
|  | 			UnmountDrive(hLogicalVolume); | ||||||
|  | 			PrintStatus(0, TRUE, "Writing partition boot record..."); | ||||||
| 			if (!WritePBR(hLogicalVolume, ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)) == DT_FREEDOS)) { | 			if (!WritePBR(hLogicalVolume, ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)) == DT_FREEDOS)) { | ||||||
| 				// Errorcode has already been set
 | 				// Errorcode has already been set
 | ||||||
| 				goto out; | 				goto out; | ||||||
|  | @ -522,11 +539,13 @@ void __cdecl FormatThread(void* param) | ||||||
| 			// ...but we must have relinquished that lock to write the MS-DOS files 
 | 			// ...but we must have relinquished that lock to write the MS-DOS files 
 | ||||||
| 			safe_unlockclose(hLogicalVolume); | 			safe_unlockclose(hLogicalVolume); | ||||||
| 			UpdateProgress(OP_DOS, -1.0f); | 			UpdateProgress(OP_DOS, -1.0f); | ||||||
| 			PrintStatus(0, "Copying DOS files...\n"); | 			if (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)) != DT_ISO) { | ||||||
|  | 				PrintStatus(0, TRUE, "Copying DOS files..."); | ||||||
| 				if (!ExtractDOS(drive_name)) { | 				if (!ExtractDOS(drive_name)) { | ||||||
| 					FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY; | 					FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY; | ||||||
| 					goto out; | 					goto out; | ||||||
| 				} | 				} | ||||||
|  | 			} | ||||||
| 			break; | 			break; | ||||||
| 		// Syslinux requires patching of the PBR after the files have been extracted
 | 		// Syslinux requires patching of the PBR after the files have been extracted
 | ||||||
| 		case DT_SYSLINUX: | 		case DT_SYSLINUX: | ||||||
|  | @ -538,6 +557,8 @@ void __cdecl FormatThread(void* param) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// TODO: SetVolumeMountPoint
 | ||||||
|  | 
 | ||||||
| out: | out: | ||||||
| 	safe_unlockclose(hLogicalVolume); | 	safe_unlockclose(hLogicalVolume); | ||||||
| 	safe_unlockclose(hPhysicalDrive); | 	safe_unlockclose(hPhysicalDrive); | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|   <ItemGroup Label="ProjectConfigurations"> |   <ItemGroup Label="ProjectConfigurations"> | ||||||
|     <ProjectConfiguration Include="Debug|Win32"> |     <ProjectConfiguration Include="Debug|Win32"> | ||||||
|  | @ -34,6 +34,8 @@ | ||||||
|     <ClInclude Include="..\inc\br_fat32_0x0.h" /> |     <ClInclude Include="..\inc\br_fat32_0x0.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32_0x3f0.h" /> |     <ClInclude Include="..\inc\br_fat32_0x3f0.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32_0x52.h" /> |     <ClInclude Include="..\inc\br_fat32_0x52.h" /> | ||||||
|  |     <ClInclude Include="..\inc\br_ntfs_0x0.h" /> | ||||||
|  |     <ClInclude Include="..\inc\br_ntfs_0x54.h" /> | ||||||
|     <ClInclude Include="..\inc\fat12.h" /> |     <ClInclude Include="..\inc\fat12.h" /> | ||||||
|     <ClInclude Include="..\inc\fat16.h" /> |     <ClInclude Include="..\inc\fat16.h" /> | ||||||
|     <ClInclude Include="..\inc\fat32.h" /> |     <ClInclude Include="..\inc\fat32.h" /> | ||||||
|  | @ -47,6 +49,7 @@ | ||||||
|     <ClInclude Include="..\inc\mbr_vista.h" /> |     <ClInclude Include="..\inc\mbr_vista.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_win7.h" /> |     <ClInclude Include="..\inc\mbr_win7.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_zero.h" /> |     <ClInclude Include="..\inc\mbr_zero.h" /> | ||||||
|  |     <ClInclude Include="..\inc\ntfs.h" /> | ||||||
|     <ClInclude Include="..\inc\partition_info.h" /> |     <ClInclude Include="..\inc\partition_info.h" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  | @ -55,6 +58,7 @@ | ||||||
|     <ClCompile Include="..\fat16.c" /> |     <ClCompile Include="..\fat16.c" /> | ||||||
|     <ClCompile Include="..\fat32.c" /> |     <ClCompile Include="..\fat32.c" /> | ||||||
|     <ClCompile Include="..\file.c" /> |     <ClCompile Include="..\file.c" /> | ||||||
|  |     <ClCompile Include="..\ntfs.c" /> | ||||||
|     <ClCompile Include="..\partition_info.c" /> |     <ClCompile Include="..\partition_info.c" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <PropertyGroup Label="Globals"> |   <PropertyGroup Label="Globals"> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <Filter Include="Source Files"> |     <Filter Include="Source Files"> | ||||||
|  | @ -98,6 +98,15 @@ | ||||||
|     <ClInclude Include="..\inc\mbr_zero.h"> |     <ClInclude Include="..\inc\mbr_zero.h"> | ||||||
|       <Filter>Header Files</Filter> |       <Filter>Header Files</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\ntfs.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\br_ntfs_0x0.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\br_ntfs_0x54.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="..\br.c"> |     <ClCompile Include="..\br.c"> | ||||||
|  | @ -118,5 +127,8 @@ | ||||||
|     <ClCompile Include="..\partition_info.c"> |     <ClCompile Include="..\partition_info.c"> | ||||||
|       <Filter>Source Files</Filter> |       <Filter>Source Files</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\ntfs.c"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| </Project> | </Project> | ||||||
|  | @ -17,4 +17,5 @@ SOURCES=file.c           \ | ||||||
|         fat12.c          \ |         fat12.c          \ | ||||||
|         fat16.c          \ |         fat16.c          \ | ||||||
|         fat32.c          \ |         fat32.c          \ | ||||||
|  |         ntfs.c           \ | ||||||
|         partition_info.c |         partition_info.c | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| noinst_LIBRARIES = libmssys.a | noinst_LIBRARIES = libmssys.a | ||||||
| 
 | 
 | ||||||
| libmssys_a_SOURCES = fat12.c fat16.c fat32.c partition_info.c br.c file.c | libmssys_a_SOURCES = fat12.c fat16.c fat32.c ntfs.c partition_info.c br.c file.c | ||||||
| libmssys_a_CFLAGS = -I./inc $(AM_CFLAGS) | libmssys_a_CFLAGS = -I./inc $(AM_CFLAGS) | ||||||
|  |  | ||||||
|  | @ -54,8 +54,8 @@ libmssys_a_AR = $(AR) $(ARFLAGS) | ||||||
| libmssys_a_LIBADD = | libmssys_a_LIBADD = | ||||||
| am_libmssys_a_OBJECTS = libmssys_a-fat12.$(OBJEXT) \
 | am_libmssys_a_OBJECTS = libmssys_a-fat12.$(OBJEXT) \
 | ||||||
| 	libmssys_a-fat16.$(OBJEXT) libmssys_a-fat32.$(OBJEXT) \
 | 	libmssys_a-fat16.$(OBJEXT) libmssys_a-fat32.$(OBJEXT) \
 | ||||||
| 	libmssys_a-partition_info.$(OBJEXT) libmssys_a-br.$(OBJEXT) \
 | 	libmssys_a-ntfs.$(OBJEXT) libmssys_a-partition_info.$(OBJEXT) \
 | ||||||
| 	libmssys_a-file.$(OBJEXT) | 	libmssys_a-br.$(OBJEXT) libmssys_a-file.$(OBJEXT) | ||||||
| libmssys_a_OBJECTS = $(am_libmssys_a_OBJECTS) | libmssys_a_OBJECTS = $(am_libmssys_a_OBJECTS) | ||||||
| DEFAULT_INCLUDES = -I.@am__isrc@ | DEFAULT_INCLUDES = -I.@am__isrc@ | ||||||
| depcomp = | depcomp = | ||||||
|  | @ -168,7 +168,7 @@ top_build_prefix = @top_build_prefix@ | ||||||
| top_builddir = @top_builddir@ | top_builddir = @top_builddir@ | ||||||
| top_srcdir = @top_srcdir@ | top_srcdir = @top_srcdir@ | ||||||
| noinst_LIBRARIES = libmssys.a | noinst_LIBRARIES = libmssys.a | ||||||
| libmssys_a_SOURCES = fat12.c fat16.c fat32.c partition_info.c br.c file.c | libmssys_a_SOURCES = fat12.c fat16.c fat32.c ntfs.c partition_info.c br.c file.c | ||||||
| libmssys_a_CFLAGS = -I./inc $(AM_CFLAGS) | libmssys_a_CFLAGS = -I./inc $(AM_CFLAGS) | ||||||
| all: all-am | all: all-am | ||||||
| 
 | 
 | ||||||
|  | @ -250,6 +250,14 @@ libmssys_a-fat32.obj: fat32.c | ||||||
| 	$(AM_V_CC) @AM_BACKSLASH@ | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
| 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-fat32.obj `if test -f 'fat32.c'; then $(CYGPATH_W) 'fat32.c'; else $(CYGPATH_W) '$(srcdir)/fat32.c'; fi` | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-fat32.obj `if test -f 'fat32.c'; then $(CYGPATH_W) 'fat32.c'; else $(CYGPATH_W) '$(srcdir)/fat32.c'; fi` | ||||||
| 
 | 
 | ||||||
|  | libmssys_a-ntfs.o: ntfs.c | ||||||
|  | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
|  | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-ntfs.o `test -f 'ntfs.c' || echo '$(srcdir)/'`ntfs.c | ||||||
|  | 
 | ||||||
|  | libmssys_a-ntfs.obj: ntfs.c | ||||||
|  | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
|  | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-ntfs.obj `if test -f 'ntfs.c'; then $(CYGPATH_W) 'ntfs.c'; else $(CYGPATH_W) '$(srcdir)/ntfs.c'; fi` | ||||||
|  | 
 | ||||||
| libmssys_a-partition_info.o: partition_info.c | libmssys_a-partition_info.o: partition_info.c | ||||||
| 	$(AM_V_CC) @AM_BACKSLASH@ | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
| 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-partition_info.o `test -f 'partition_info.c' || echo '$(srcdir)/'`partition_info.c | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmssys_a_CFLAGS) $(CFLAGS) -c -o libmssys_a-partition_info.o `test -f 'partition_info.c' || echo '$(srcdir)/'`partition_info.c | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								src/ms-sys/inc/br_ntfs_0x0.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/ms-sys/inc/br_ntfs_0x0.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | ||||||
|  | unsigned char br_ntfs_0x0[] = { | ||||||
|  |   0xEB, 0x52, 0x90, 0x4E, 0x54, 0x46, 0x53, 0x20, 0x20, 0x20, 0x20 | ||||||
|  | }; | ||||||
							
								
								
									
										340
									
								
								src/ms-sys/inc/br_ntfs_0x54.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										340
									
								
								src/ms-sys/inc/br_ntfs_0x54.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,340 @@ | ||||||
|  | unsigned char br_ntfs_0x54[] = { | ||||||
|  |   0xFA, 0x33, 0xC0, 0x8E, 0xD0, 0xBC, 0x00, 0x7C, 0xFB, 0x68, 0xC0, 0x07, | ||||||
|  |   0x1F, 0x1E, 0x68, 0x66, 0x00, 0xCB, 0x88, 0x16, 0x0E, 0x00, 0x66, 0x81, | ||||||
|  |   0x3E, 0x03, 0x00, 0x4E, 0x54, 0x46, 0x53, 0x75, 0x15, 0xB4, 0x41, 0xBB, | ||||||
|  |   0xAA, 0x55, 0xCD, 0x13, 0x72, 0x0C, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x06, | ||||||
|  |   0xF7, 0xC1, 0x01, 0x00, 0x75, 0x03, 0xE9, 0xDD, 0x00, 0x1E, 0x83, 0xEC, | ||||||
|  |   0x18, 0x68, 0x1A, 0x00, 0xB4, 0x48, 0x8A, 0x16, 0x0E, 0x00, 0x8B, 0xF4, | ||||||
|  |   0x16, 0x1F, 0xCD, 0x13, 0x9F, 0x83, 0xC4, 0x18, 0x9E, 0x58, 0x1F, 0x72, | ||||||
|  |   0xE1, 0x3B, 0x06, 0x0B, 0x00, 0x75, 0xDB, 0xA3, 0x0F, 0x00, 0xC1, 0x2E, | ||||||
|  |   0x0F, 0x00, 0x04, 0x1E, 0x5A, 0x33, 0xDB, 0xB9, 0x00, 0x20, 0x2B, 0xC8, | ||||||
|  |   0x66, 0xFF, 0x06, 0x11, 0x00, 0x03, 0x16, 0x0F, 0x00, 0x8E, 0xC2, 0xFF, | ||||||
|  |   0x06, 0x16, 0x00, 0xE8, 0x4B, 0x00, 0x2B, 0xC8, 0x77, 0xEF, 0xB8, 0x00, | ||||||
|  |   0xBB, 0xCD, 0x1A, 0x66, 0x23, 0xC0, 0x75, 0x2D, 0x66, 0x81, 0xFB, 0x54, | ||||||
|  |   0x43, 0x50, 0x41, 0x75, 0x24, 0x81, 0xF9, 0x02, 0x01, 0x72, 0x1E, 0x16, | ||||||
|  |   0x68, 0x07, 0xBB, 0x16, 0x68, 0x70, 0x0E, 0x16, 0x68, 0x09, 0x00, 0x66, | ||||||
|  |   0x53, 0x66, 0x53, 0x66, 0x55, 0x16, 0x16, 0x16, 0x68, 0xB8, 0x01, 0x66, | ||||||
|  |   0x61, 0x0E, 0x07, 0xCD, 0x1A, 0x33, 0xC0, 0xBF, 0x28, 0x10, 0xB9, 0xD8, | ||||||
|  |   0x0F, 0xFC, 0xF3, 0xAA, 0xE9, 0x5F, 0x01, 0x90, 0x90, 0x66, 0x60, 0x1E, | ||||||
|  |   0x06, 0x66, 0xA1, 0x11, 0x00, 0x66, 0x03, 0x06, 0x1C, 0x00, 0x1E, 0x66, | ||||||
|  |   0x68, 0x00, 0x00, 0x00, 0x00, 0x66, 0x50, 0x06, 0x53, 0x68, 0x01, 0x00, | ||||||
|  |   0x68, 0x10, 0x00, 0xB4, 0x42, 0x8A, 0x16, 0x0E, 0x00, 0x16, 0x1F, 0x8B, | ||||||
|  |   0xF4, 0xCD, 0x13, 0x66, 0x59, 0x5B, 0x5A, 0x66, 0x59, 0x66, 0x59, 0x1F, | ||||||
|  |   0x0F, 0x82, 0x16, 0x00, 0x66, 0xFF, 0x06, 0x11, 0x00, 0x03, 0x16, 0x0F, | ||||||
|  |   0x00, 0x8E, 0xC2, 0xFF, 0x0E, 0x16, 0x00, 0x75, 0xBC, 0x07, 0x1F, 0x66, | ||||||
|  |   0x61, 0xC3, 0xA0, 0xF8, 0x01, 0xE8, 0x09, 0x00, 0xA0, 0xFB, 0x01, 0xE8, | ||||||
|  |   0x03, 0x00, 0xF4, 0xEB, 0xFD, 0xB4, 0x01, 0x8B, 0xF0, 0xAC, 0x3C, 0x00, | ||||||
|  |   0x74, 0x09, 0xB4, 0x0E, 0xBB, 0x07, 0x00, 0xCD, 0x10, 0xEB, 0xF2, 0xC3, | ||||||
|  |   0x0D, 0x0A, 0x41, 0x20, 0x64, 0x69, 0x73, 0x6B, 0x20, 0x72, 0x65, 0x61, | ||||||
|  |   0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x63, 0x63, 0x75, | ||||||
|  |   0x72, 0x72, 0x65, 0x64, 0x00, 0x0D, 0x0A, 0x42, 0x4F, 0x4F, 0x54, 0x4D, | ||||||
|  |   0x47, 0x52, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6E, | ||||||
|  |   0x67, 0x00, 0x0D, 0x0A, 0x42, 0x4F, 0x4F, 0x54, 0x4D, 0x47, 0x52, 0x20, | ||||||
|  |   0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, | ||||||
|  |   0x64, 0x00, 0x0D, 0x0A, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x43, 0x74, | ||||||
|  |   0x72, 0x6C, 0x2B, 0x41, 0x6C, 0x74, 0x2B, 0x44, 0x65, 0x6C, 0x20, 0x74, | ||||||
|  |   0x6F, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0D, 0x0A, 0x00, | ||||||
|  |   0x8C, 0xA9, 0xBE, 0xD6, 0x00, 0x00, 0x55, 0xAA, 0x07, 0x00, 0x42, 0x00, | ||||||
|  |   0x4F, 0x00, 0x4F, 0x00, 0x54, 0x00, 0x4D, 0x00, 0x47, 0x00, 0x52, 0x00, | ||||||
|  |   0x04, 0x00, 0x24, 0x00, 0x49, 0x00, 0x33, 0x00, 0x30, 0x00, 0x00, 0xD4, | ||||||
|  |   0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x22, | ||||||
|  |   0x90, 0x90, 0x05, 0x00, 0x4E, 0x00, 0x54, 0x00, 0x4C, 0x00, 0x44, 0x00, | ||||||
|  |   0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x0F, | ||||||
|  |   0xB7, 0x06, 0x0B, 0x00, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, 0x66, 0xF7, | ||||||
|  |   0xE3, 0x66, 0xA3, 0x52, 0x02, 0x66, 0x8B, 0x0E, 0x40, 0x00, 0x80, 0xF9, | ||||||
|  |   0x00, 0x0F, 0x8F, 0x0E, 0x00, 0xF6, 0xD9, 0x66, 0xB8, 0x01, 0x00, 0x00, | ||||||
|  |   0x00, 0x66, 0xD3, 0xE0, 0xEB, 0x08, 0x90, 0x66, 0xA1, 0x52, 0x02, 0x66, | ||||||
|  |   0xF7, 0xE1, 0x66, 0xA3, 0x66, 0x02, 0x66, 0x0F, 0xB7, 0x1E, 0x0B, 0x00, | ||||||
|  |   0x66, 0x33, 0xD2, 0x66, 0xF7, 0xF3, 0x66, 0xA3, 0x56, 0x02, 0xE8, 0x95, | ||||||
|  |   0x04, 0x66, 0x8B, 0x0E, 0x4E, 0x02, 0x66, 0x89, 0x0E, 0x26, 0x02, 0x66, | ||||||
|  |   0x03, 0x0E, 0x66, 0x02, 0x66, 0x89, 0x0E, 0x2A, 0x02, 0x66, 0x03, 0x0E, | ||||||
|  |   0x66, 0x02, 0x66, 0x89, 0x0E, 0x2E, 0x02, 0x66, 0x03, 0x0E, 0x66, 0x02, | ||||||
|  |   0x66, 0x89, 0x0E, 0x3E, 0x02, 0x66, 0x03, 0x0E, 0x66, 0x02, 0x66, 0x89, | ||||||
|  |   0x0E, 0x46, 0x02, 0x66, 0xB8, 0x90, 0x00, 0x00, 0x00, 0x66, 0x8B, 0x0E, | ||||||
|  |   0x26, 0x02, 0xE8, 0x83, 0x09, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0x5E, 0xFE, | ||||||
|  |   0x66, 0xA3, 0x32, 0x02, 0x66, 0xB8, 0xA0, 0x00, 0x00, 0x00, 0x66, 0x8B, | ||||||
|  |   0x0E, 0x2A, 0x02, 0xE8, 0x6A, 0x09, 0x66, 0xA3, 0x36, 0x02, 0x66, 0xB8, | ||||||
|  |   0xB0, 0x00, 0x00, 0x00, 0x66, 0x8B, 0x0E, 0x2E, 0x02, 0xE8, 0x58, 0x09, | ||||||
|  |   0x66, 0xA3, 0x3A, 0x02, 0x66, 0xA1, 0x32, 0x02, 0x66, 0x0B, 0xC0, 0x0F, | ||||||
|  |   0x84, 0x2B, 0xFE, 0x67, 0x80, 0x78, 0x08, 0x00, 0x0F, 0x85, 0x22, 0xFE, | ||||||
|  |   0x67, 0x66, 0x8D, 0x50, 0x10, 0x67, 0x03, 0x42, 0x04, 0x67, 0x66, 0x0F, | ||||||
|  |   0xB6, 0x48, 0x0C, 0x66, 0x89, 0x0E, 0x72, 0x02, 0x67, 0x66, 0x8B, 0x48, | ||||||
|  |   0x08, 0x66, 0x89, 0x0E, 0x6E, 0x02, 0x66, 0xA1, 0x6E, 0x02, 0x66, 0x0F, | ||||||
|  |   0xB7, 0x0E, 0x0B, 0x00, 0x66, 0x33, 0xD2, 0x66, 0xF7, 0xF1, 0x66, 0xA3, | ||||||
|  |   0x76, 0x02, 0x66, 0xA1, 0x46, 0x02, 0x66, 0x03, 0x06, 0x6E, 0x02, 0x66, | ||||||
|  |   0xA3, 0x4A, 0x02, 0x66, 0x83, 0x3E, 0x36, 0x02, 0x00, 0x0F, 0x84, 0x1D, | ||||||
|  |   0x00, 0x66, 0x83, 0x3E, 0x3A, 0x02, 0x00, 0x0F, 0x84, 0xCF, 0xFD, 0x66, | ||||||
|  |   0x8B, 0x1E, 0x3A, 0x02, 0x1E, 0x07, 0x66, 0x8B, 0x3E, 0x4A, 0x02, 0x66, | ||||||
|  |   0xA1, 0x2E, 0x02, 0xE8, 0xE0, 0x01, 0x66, 0x0F, 0xB7, 0x0E, 0x00, 0x02, | ||||||
|  |   0x66, 0xB8, 0x02, 0x02, 0x00, 0x00, 0xE8, 0x22, 0x08, 0x66, 0x0B, 0xC0, | ||||||
|  |   0x0F, 0x85, 0x16, 0x00, 0x66, 0x0F, 0xB7, 0x0E, 0x5A, 0x02, 0x66, 0xB8, | ||||||
|  |   0x5C, 0x02, 0x00, 0x00, 0xE8, 0x0C, 0x08, 0x66, 0x0B, 0xC0, 0x0F, 0x84, | ||||||
|  |   0x42, 0x0C, 0x67, 0x66, 0x8B, 0x00, 0x1E, 0x07, 0x66, 0x8B, 0x3E, 0x3E, | ||||||
|  |   0x02, 0xE8, 0x3F, 0x06, 0x66, 0xA1, 0x3E, 0x02, 0x66, 0xBB, 0x20, 0x00, | ||||||
|  |   0x00, 0x00, 0x66, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x66, 0xBA, 0x00, 0x00, | ||||||
|  |   0x00, 0x00, 0xE8, 0xE4, 0x00, 0x66, 0x85, 0xC0, 0x0F, 0x85, 0x23, 0x00, | ||||||
|  |   0x66, 0xA1, 0x3E, 0x02, 0x66, 0xBB, 0x80, 0x00, 0x00, 0x00, 0x66, 0xB9, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x66, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xC4, | ||||||
|  |   0x00, 0x66, 0x0B, 0xC0, 0x0F, 0x85, 0x44, 0x00, 0xE9, 0xF1, 0x0B, 0x66, | ||||||
|  |   0x33, 0xD2, 0x66, 0xB9, 0x80, 0x00, 0x00, 0x00, 0x66, 0xA1, 0x3E, 0x02, | ||||||
|  |   0xE8, 0xCA, 0x08, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0xDA, 0x0B, 0x1E, 0x07, | ||||||
|  |   0x66, 0x8B, 0x3E, 0x3E, 0x02, 0xE8, 0xDB, 0x05, 0x66, 0xA1, 0x3E, 0x02, | ||||||
|  |   0x66, 0xBB, 0x80, 0x00, 0x00, 0x00, 0x66, 0xB9, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |   0x66, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x00, 0x66, 0x0B, 0xC0, | ||||||
|  |   0x0F, 0x84, 0xB0, 0x0B, 0x67, 0x66, 0x0F, 0xB7, 0x58, 0x0C, 0x66, 0x81, | ||||||
|  |   0xE3, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0x85, 0xA5, 0x0B, 0x66, 0x8B, 0xD8, | ||||||
|  |   0x68, 0x00, 0x20, 0x07, 0x66, 0x2B, 0xFF, 0x66, 0xA1, 0x3E, 0x02, 0xE8, | ||||||
|  |   0x00, 0x01, 0x68, 0x00, 0x20, 0x07, 0x66, 0x2B, 0xFF, 0x66, 0xA1, 0x3E, | ||||||
|  |   0x02, 0xE8, 0xAC, 0x0A, 0x8A, 0x16, 0x0E, 0x00, 0xB8, 0xE8, 0x03, 0x8E, | ||||||
|  |   0xC0, 0x8D, 0x36, 0x0B, 0x00, 0x2B, 0xC0, 0x68, 0x00, 0x20, 0x50, 0xCB, | ||||||
|  |   0x06, 0x1E, 0x66, 0x60, 0x66, 0x8B, 0xDA, 0x66, 0x0F, 0xB6, 0x0E, 0x0D, | ||||||
|  |   0x00, 0x66, 0xF7, 0xE1, 0x66, 0xA3, 0x11, 0x00, 0x66, 0x8B, 0xC3, 0x66, | ||||||
|  |   0xF7, 0xE1, 0xA3, 0x16, 0x00, 0x8B, 0xDF, 0x83, 0xE3, 0x0F, 0x8C, 0xC0, | ||||||
|  |   0x66, 0xC1, 0xEF, 0x04, 0x03, 0xC7, 0x50, 0x07, 0xE8, 0x3E, 0xFC, 0x66, | ||||||
|  |   0x61, 0x90, 0x1F, 0x07, 0xC3, 0x67, 0x03, 0x40, 0x14, 0x67, 0x66, 0x83, | ||||||
|  |   0x38, 0xFF, 0x0F, 0x84, 0x4C, 0x00, 0x67, 0x66, 0x39, 0x18, 0x0F, 0x85, | ||||||
|  |   0x33, 0x00, 0x66, 0x0B, 0xC9, 0x0F, 0x85, 0x0A, 0x00, 0x67, 0x80, 0x78, | ||||||
|  |   0x09, 0x00, 0x0F, 0x85, 0x23, 0x00, 0xC3, 0x67, 0x3A, 0x48, 0x09, 0x0F, | ||||||
|  |   0x85, 0x1A, 0x00, 0x66, 0x8B, 0xF0, 0x67, 0x03, 0x70, 0x0A, 0xE8, 0x97, | ||||||
|  |   0x06, 0x66, 0x51, 0x1E, 0x07, 0x66, 0x8B, 0xFA, 0xF3, 0xA7, 0x66, 0x59, | ||||||
|  |   0x0F, 0x85, 0x01, 0x00, 0xC3, 0x67, 0x66, 0x83, 0x78, 0x04, 0x00, 0x0F, | ||||||
|  |   0x84, 0x07, 0x00, 0x67, 0x66, 0x03, 0x40, 0x04, 0xEB, 0xAB, 0x66, 0x2B, | ||||||
|  |   0xC0, 0xC3, 0x66, 0x8B, 0xF3, 0xE8, 0x6C, 0x06, 0x67, 0x66, 0x03, 0x00, | ||||||
|  |   0x67, 0xF7, 0x40, 0x0C, 0x02, 0x00, 0x0F, 0x85, 0x34, 0x00, 0x67, 0x66, | ||||||
|  |   0x8D, 0x50, 0x10, 0x67, 0x3A, 0x4A, 0x40, 0x0F, 0x85, 0x18, 0x00, 0x67, | ||||||
|  |   0x66, 0x8D, 0x72, 0x42, 0xE8, 0x49, 0x06, 0x66, 0x51, 0x1E, 0x07, 0x66, | ||||||
|  |   0x8B, 0xFB, 0xF3, 0xA7, 0x66, 0x59, 0x0F, 0x85, 0x01, 0x00, 0xC3, 0x67, | ||||||
|  |   0x83, 0x78, 0x08, 0x00, 0x0F, 0x84, 0x06, 0x00, 0x67, 0x03, 0x40, 0x08, | ||||||
|  |   0xEB, 0xC2, 0x66, 0x33, 0xC0, 0xC3, 0x67, 0x80, 0x7B, 0x08, 0x00, 0x0F, | ||||||
|  |   0x85, 0x1C, 0x00, 0x06, 0x1E, 0x66, 0x60, 0x67, 0x66, 0x8D, 0x53, 0x10, | ||||||
|  |   0x67, 0x66, 0x8B, 0x0A, 0x66, 0x8B, 0xF3, 0x67, 0x03, 0x72, 0x04, 0xF3, | ||||||
|  |   0xA4, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0x66, 0x50, 0x67, 0x66, 0x8D, | ||||||
|  |   0x53, 0x10, 0x66, 0x85, 0xC0, 0x0F, 0x85, 0x0A, 0x00, 0x67, 0x66, 0x8B, | ||||||
|  |   0x4A, 0x08, 0x66, 0x41, 0xEB, 0x11, 0x90, 0x67, 0x66, 0x8B, 0x42, 0x18, | ||||||
|  |   0x66, 0x33, 0xD2, 0x66, 0xF7, 0x36, 0x52, 0x02, 0x66, 0x8B, 0xC8, 0x66, | ||||||
|  |   0x2B, 0xC0, 0x66, 0x5E, 0xE8, 0x01, 0x00, 0xC3, 0x06, 0x1E, 0x66, 0x60, | ||||||
|  |   0x67, 0x80, 0x7B, 0x08, 0x01, 0x0F, 0x84, 0x03, 0x00, 0xE9, 0x76, 0xFB, | ||||||
|  |   0x66, 0x83, 0xF9, 0x00, 0x0F, 0x85, 0x06, 0x00, 0x66, 0x61, 0x90, 0x1F, | ||||||
|  |   0x07, 0xC3, 0x66, 0x53, 0x66, 0x50, 0x66, 0x51, 0x66, 0x56, 0x66, 0x57, | ||||||
|  |   0x06, 0xE8, 0x91, 0x04, 0x66, 0x8B, 0xD1, 0x07, 0x66, 0x5F, 0x66, 0x5E, | ||||||
|  |   0x66, 0x59, 0x66, 0x85, 0xC0, 0x0F, 0x84, 0x34, 0x00, 0x66, 0x3B, 0xCA, | ||||||
|  |   0x0F, 0x8D, 0x03, 0x00, 0x66, 0x8B, 0xD1, 0xE8, 0x82, 0xFE, 0x66, 0x2B, | ||||||
|  |   0xCA, 0x66, 0x8B, 0xDA, 0x66, 0x8B, 0xC2, 0x66, 0x0F, 0xB6, 0x16, 0x0D, | ||||||
|  |   0x00, 0x66, 0xF7, 0xE2, 0x66, 0x0F, 0xB7, 0x16, 0x0B, 0x00, 0x66, 0xF7, | ||||||
|  |   0xE2, 0x66, 0x03, 0xF8, 0x66, 0x58, 0x66, 0x03, 0xC3, 0x66, 0x5B, 0xEB, | ||||||
|  |   0x9F, 0x66, 0x85, 0xF6, 0x0F, 0x84, 0x0E, 0xFB, 0x66, 0x51, 0x66, 0x57, | ||||||
|  |   0x06, 0x67, 0x66, 0x0F, 0xB6, 0x43, 0x09, 0x66, 0x85, 0xC0, 0x0F, 0x84, | ||||||
|  |   0x20, 0x00, 0x66, 0xD1, 0xE0, 0x66, 0x2B, 0xE0, 0x66, 0x8B, 0xFC, 0x66, | ||||||
|  |   0x54, 0x66, 0x56, 0x67, 0x66, 0x0F, 0xB7, 0x73, 0x0A, 0x66, 0x03, 0xF3, | ||||||
|  |   0x66, 0x8B, 0xC8, 0xF3, 0xA4, 0x66, 0x5E, 0xEB, 0x03, 0x90, 0x66, 0x50, | ||||||
|  |   0x66, 0x50, 0x67, 0x66, 0x8B, 0x03, 0x66, 0x50, 0x67, 0x66, 0x8B, 0x43, | ||||||
|  |   0x18, 0x66, 0x50, 0x67, 0x66, 0x8B, 0x56, 0x20, 0x66, 0x85, 0xD2, 0x0F, | ||||||
|  |   0x84, 0x0B, 0x00, 0x66, 0x8B, 0xFE, 0x1E, 0x07, 0x66, 0x8B, 0xC2, 0xE8, | ||||||
|  |   0x71, 0x03, 0x66, 0x8B, 0xC6, 0x66, 0x5A, 0x66, 0x59, 0x66, 0x42, 0x66, | ||||||
|  |   0x51, 0x66, 0x56, 0xE8, 0x3F, 0x06, 0x66, 0x85, 0xC0, 0x0F, 0x84, 0x9D, | ||||||
|  |   0xFA, 0x66, 0x5E, 0x66, 0x59, 0x66, 0x8B, 0xFE, 0x1E, 0x07, 0xE8, 0x4E, | ||||||
|  |   0x03, 0x66, 0x8B, 0xC6, 0x66, 0x8B, 0xD9, 0x66, 0x59, 0x66, 0x5A, 0x66, | ||||||
|  |   0x51, 0x66, 0x56, 0x66, 0xD1, 0xE9, 0xE8, 0xF8, 0xFD, 0x66, 0x85, 0xC0, | ||||||
|  |   0x0F, 0x84, 0x76, 0xFA, 0x66, 0x5E, 0x66, 0x59, 0x66, 0x03, 0xE1, 0x07, | ||||||
|  |   0x66, 0x5F, 0x66, 0x59, 0x66, 0x8B, 0xD0, 0x66, 0x58, 0x66, 0x5B, 0x66, | ||||||
|  |   0x8B, 0xDA, 0xE9, 0xF5, 0xFE, 0x06, 0x1E, 0x66, 0x60, 0x26, 0x67, 0x66, | ||||||
|  |   0x0F, 0xB7, 0x5F, 0x04, 0x26, 0x67, 0x66, 0x0F, 0xB7, 0x4F, 0x06, 0x66, | ||||||
|  |   0x0B, 0xC9, 0x0F, 0x84, 0x44, 0xFA, 0x66, 0x03, 0xDF, 0x66, 0x83, 0xC3, | ||||||
|  |   0x02, 0x66, 0x81, 0xC7, 0xFE, 0x01, 0x00, 0x00, 0x66, 0x49, 0x66, 0x0B, | ||||||
|  |   0xC9, 0x0F, 0x84, 0x17, 0x00, 0x26, 0x67, 0x8B, 0x03, 0x26, 0x67, 0x89, | ||||||
|  |   0x07, 0x66, 0x83, 0xC3, 0x02, 0x66, 0x81, 0xC7, 0x00, 0x02, 0x00, 0x00, | ||||||
|  |   0x66, 0x49, 0xEB, 0xE2, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0x06, 0x1E, | ||||||
|  |   0x66, 0x60, 0x66, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x66, 0xA3, 0x22, 0x02, | ||||||
|  |   0x66, 0xA1, 0x1E, 0x02, 0x66, 0x03, 0x06, 0x66, 0x02, 0x66, 0xA3, 0x6A, | ||||||
|  |   0x02, 0x66, 0x03, 0x06, 0x66, 0x02, 0x66, 0xA3, 0x4E, 0x02, 0x66, 0xA1, | ||||||
|  |   0x30, 0x00, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, 0x66, 0xF7, 0xE3, 0x66, | ||||||
|  |   0x8B, 0x1E, 0x4E, 0x02, 0x66, 0x89, 0x07, 0x66, 0xA3, 0x11, 0x00, 0x83, | ||||||
|  |   0xC3, 0x04, 0x66, 0xA1, 0x56, 0x02, 0x66, 0x89, 0x07, 0xA3, 0x16, 0x00, | ||||||
|  |   0x83, 0xC3, 0x04, 0x66, 0x89, 0x1E, 0x4E, 0x02, 0x66, 0x8B, 0x1E, 0x1E, | ||||||
|  |   0x02, 0x1E, 0x07, 0xE8, 0x67, 0xF9, 0x66, 0x8B, 0xFB, 0xE8, 0x51, 0xFF, | ||||||
|  |   0x66, 0xA1, 0x1E, 0x02, 0x66, 0xBB, 0x20, 0x00, 0x00, 0x00, 0x66, 0xB9, | ||||||
|  |   0x00, 0x00, 0x00, 0x00, 0x66, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x10, | ||||||
|  |   0xFD, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0x19, 0x01, 0x66, 0x8B, 0xD8, 0x1E, | ||||||
|  |   0x07, 0x66, 0x8B, 0x3E, 0x1A, 0x02, 0x66, 0x33, 0xC0, 0xE8, 0xA2, 0xFD, | ||||||
|  |   0x66, 0x8B, 0x1E, 0x1A, 0x02, 0x66, 0x81, 0x3F, 0x80, 0x00, 0x00, 0x00, | ||||||
|  |   0x0F, 0x84, 0xEB, 0x00, 0x03, 0x5F, 0x04, 0xEB, 0xF0, 0x66, 0x53, 0x66, | ||||||
|  |   0x8B, 0x47, 0x10, 0x66, 0xF7, 0x26, 0x56, 0x02, 0x66, 0x50, 0x66, 0x33, | ||||||
|  |   0xD2, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, 0x66, 0xF7, 0xF3, 0x66, 0x52, | ||||||
|  |   0xE8, 0xDC, 0x00, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0x44, 0xF9, 0x66, 0x8B, | ||||||
|  |   0x0E, 0x56, 0x02, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, 0x66, 0xF7, 0xE3, | ||||||
|  |   0x66, 0x5A, 0x66, 0x03, 0xC2, 0x66, 0x8B, 0x1E, 0x4E, 0x02, 0x66, 0x89, | ||||||
|  |   0x07, 0x83, 0xC3, 0x04, 0x66, 0x0F, 0xB6, 0x06, 0x0D, 0x00, 0x66, 0x2B, | ||||||
|  |   0xC2, 0x66, 0x3B, 0xC1, 0x0F, 0x86, 0x03, 0x00, 0x66, 0x8B, 0xC1, 0x66, | ||||||
|  |   0x89, 0x07, 0x66, 0x2B, 0xC8, 0x66, 0x5A, 0x0F, 0x84, 0x75, 0x00, 0x66, | ||||||
|  |   0x03, 0xC2, 0x66, 0x50, 0x66, 0x33, 0xD2, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, | ||||||
|  |   0x00, 0x66, 0xF7, 0xF3, 0x66, 0x51, 0xE8, 0x82, 0x00, 0x66, 0x59, 0x66, | ||||||
|  |   0x0B, 0xC0, 0x0F, 0x84, 0xE8, 0xF8, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, | ||||||
|  |   0x66, 0xF7, 0xE3, 0x66, 0x8B, 0x1E, 0x4E, 0x02, 0x66, 0x8B, 0x17, 0x83, | ||||||
|  |   0xC3, 0x04, 0x66, 0x03, 0x17, 0x66, 0x3B, 0xD0, 0x0F, 0x85, 0x15, 0x00, | ||||||
|  |   0x66, 0x0F, 0xB6, 0x06, 0x0D, 0x00, 0x66, 0x3B, 0xC1, 0x0F, 0x86, 0x03, | ||||||
|  |   0x00, 0x66, 0x8B, 0xC1, 0x66, 0x01, 0x07, 0xEB, 0xA5, 0x83, 0xC3, 0x04, | ||||||
|  |   0x66, 0x89, 0x1E, 0x4E, 0x02, 0x66, 0x89, 0x07, 0x83, 0xC3, 0x04, 0x66, | ||||||
|  |   0x0F, 0xB6, 0x06, 0x0D, 0x00, 0x66, 0x3B, 0xC1, 0x0F, 0x86, 0x03, 0x00, | ||||||
|  |   0x66, 0x8B, 0xC1, 0x66, 0x89, 0x07, 0xEB, 0x82, 0x83, 0xC3, 0x04, 0x66, | ||||||
|  |   0xFF, 0x06, 0x22, 0x02, 0x66, 0x89, 0x1E, 0x4E, 0x02, 0x66, 0x5B, 0x03, | ||||||
|  |   0x5F, 0x04, 0x66, 0x81, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x0C, | ||||||
|  |   0xFF, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0x66, 0x8B, 0xD0, 0x66, 0x8B, | ||||||
|  |   0x0E, 0x22, 0x02, 0x66, 0x8B, 0x36, 0x6A, 0x02, 0x66, 0x03, 0x36, 0x66, | ||||||
|  |   0x02, 0x66, 0x52, 0x66, 0x51, 0x66, 0x52, 0x66, 0x8B, 0x1E, 0x6A, 0x02, | ||||||
|  |   0x66, 0x8B, 0x3E, 0x56, 0x02, 0x66, 0x8B, 0x04, 0x66, 0xA3, 0x11, 0x00, | ||||||
|  |   0x83, 0xC6, 0x04, 0x66, 0x8B, 0x04, 0xA3, 0x16, 0x00, 0x83, 0xC6, 0x04, | ||||||
|  |   0x1E, 0x07, 0xE8, 0xE8, 0xF7, 0x66, 0x2B, 0xF8, 0x0F, 0x84, 0x08, 0x00, | ||||||
|  |   0xF7, 0x26, 0x0B, 0x00, 0x03, 0xD8, 0xEB, 0xD9, 0x66, 0x8B, 0x3E, 0x6A, | ||||||
|  |   0x02, 0x1E, 0x07, 0xE8, 0xBF, 0xFD, 0x66, 0xA1, 0x6A, 0x02, 0x66, 0xBB, | ||||||
|  |   0x80, 0x00, 0x00, 0x00, 0x66, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x66, 0x8B, | ||||||
|  |   0xD1, 0xE8, 0x81, 0xFB, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0xFF, 0xF7, 0x66, | ||||||
|  |   0x8B, 0xD8, 0x66, 0x58, 0x66, 0x56, 0xE8, 0x2C, 0x01, 0x66, 0x5E, 0x66, | ||||||
|  |   0x0B, 0xC0, 0x0F, 0x84, 0x05, 0x00, 0x66, 0x5B, 0x66, 0x5B, 0xC3, 0x66, | ||||||
|  |   0x59, 0x66, 0x5A, 0xE2, 0x84, 0x66, 0x33, 0xC0, 0xC3, 0x06, 0x1E, 0x66, | ||||||
|  |   0x60, 0x66, 0x50, 0x66, 0x51, 0x66, 0x33, 0xD2, 0x66, 0x0F, 0xB6, 0x1E, | ||||||
|  |   0x0D, 0x00, 0x66, 0xF7, 0xF3, 0x66, 0x52, 0x66, 0x57, 0xE8, 0x53, 0xFF, | ||||||
|  |   0x66, 0x5F, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0xB9, 0xF7, 0x66, 0x0F, 0xB6, | ||||||
|  |   0x1E, 0x0D, 0x00, 0x66, 0xF7, 0xE3, 0x66, 0x5A, 0x66, 0x03, 0xC2, 0x66, | ||||||
|  |   0xA3, 0x11, 0x00, 0x66, 0x59, 0x66, 0x0F, 0xB6, 0x1E, 0x0D, 0x00, 0x66, | ||||||
|  |   0x3B, 0xCB, 0x0F, 0x8E, 0x13, 0x00, 0x89, 0x1E, 0x16, 0x00, 0x66, 0x2B, | ||||||
|  |   0xCB, 0x66, 0x58, 0x66, 0x03, 0xC3, 0x66, 0x50, 0x66, 0x51, 0xEB, 0x14, | ||||||
|  |   0x90, 0x66, 0x58, 0x66, 0x03, 0xC1, 0x66, 0x50, 0x89, 0x0E, 0x16, 0x00, | ||||||
|  |   0x66, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x66, 0x51, 0x06, 0x66, 0x57, 0x8B, | ||||||
|  |   0xDF, 0x83, 0xE3, 0x0F, 0x8C, 0xC0, 0x66, 0xC1, 0xEF, 0x04, 0x03, 0xC7, | ||||||
|  |   0x50, 0x07, 0xE8, 0x10, 0xF7, 0x66, 0x5F, 0x07, 0x66, 0x03, 0x3E, 0x52, | ||||||
|  |   0x02, 0x66, 0x59, 0x66, 0x58, 0x66, 0x83, 0xF9, 0x00, 0x0F, 0x8F, 0x70, | ||||||
|  |   0xFF, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0x06, 0x1E, 0x66, 0x60, 0x66, | ||||||
|  |   0xF7, 0x26, 0x56, 0x02, 0x66, 0x8B, 0x0E, 0x56, 0x02, 0xE8, 0x55, 0xFF, | ||||||
|  |   0xE8, 0xD2, 0xFC, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0x06, 0x1E, 0x66, | ||||||
|  |   0x60, 0x66, 0xF7, 0x26, 0x72, 0x02, 0x66, 0x8B, 0x1E, 0x36, 0x02, 0x66, | ||||||
|  |   0x8B, 0x0E, 0x72, 0x02, 0x66, 0x8B, 0x36, 0x2A, 0x02, 0x1E, 0x07, 0x66, | ||||||
|  |   0x8B, 0x3E, 0x46, 0x02, 0xE8, 0x81, 0xFB, 0xE8, 0xA7, 0xFC, 0x66, 0x61, | ||||||
|  |   0x90, 0x1F, 0x07, 0xC3, 0x66, 0x50, 0x66, 0x53, 0x66, 0x51, 0x66, 0x8B, | ||||||
|  |   0x1E, 0x4A, 0x02, 0x66, 0x8B, 0xC8, 0x66, 0xC1, 0xE8, 0x03, 0x66, 0x83, | ||||||
|  |   0xE1, 0x07, 0x66, 0x03, 0xD8, 0x66, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x66, | ||||||
|  |   0xD3, 0xE0, 0x67, 0x84, 0x03, 0x0F, 0x84, 0x04, 0x00, 0xF8, 0xEB, 0x02, | ||||||
|  |   0x90, 0xF9, 0x66, 0x59, 0x66, 0x5B, 0x66, 0x58, 0xC3, 0x67, 0x80, 0x7B, | ||||||
|  |   0x08, 0x01, 0x0F, 0x84, 0x04, 0x00, 0x66, 0x2B, 0xC0, 0xC3, 0x67, 0x66, | ||||||
|  |   0x8D, 0x73, 0x10, 0x67, 0x66, 0x8B, 0x56, 0x08, 0x66, 0x3B, 0xC2, 0x0F, | ||||||
|  |   0x87, 0x0B, 0x00, 0x67, 0x66, 0x8B, 0x16, 0x66, 0x3B, 0xC2, 0x0F, 0x83, | ||||||
|  |   0x04, 0x00, 0x66, 0x2B, 0xC0, 0xC3, 0x67, 0x03, 0x5E, 0x10, 0x66, 0x2B, | ||||||
|  |   0xF6, 0x67, 0x80, 0x3B, 0x00, 0x0F, 0x84, 0x3E, 0x00, 0xE8, 0x81, 0x00, | ||||||
|  |   0x66, 0x03, 0xF1, 0xE8, 0x39, 0x00, 0x66, 0x03, 0xCA, 0x66, 0x3B, 0xC1, | ||||||
|  |   0x0F, 0x8C, 0x21, 0x00, 0x66, 0x8B, 0xD1, 0x66, 0x50, 0x67, 0x66, 0x0F, | ||||||
|  |   0xB6, 0x0B, 0x66, 0x8B, 0xC1, 0x66, 0x83, 0xE0, 0x0F, 0x66, 0xC1, 0xE9, | ||||||
|  |   0x04, 0x66, 0x03, 0xD9, 0x66, 0x03, 0xD8, 0x66, 0x43, 0x66, 0x58, 0xEB, | ||||||
|  |   0xC4, 0x66, 0x2B, 0xC8, 0x66, 0x2B, 0xC2, 0x66, 0x03, 0xC6, 0xC3, 0x66, | ||||||
|  |   0x2B, 0xC0, 0xC3, 0x66, 0x2B, 0xC9, 0x67, 0x8A, 0x0B, 0x80, 0xE1, 0x0F, | ||||||
|  |   0x66, 0x83, 0xF9, 0x00, 0x0F, 0x85, 0x04, 0x00, 0x66, 0x2B, 0xC9, 0xC3, | ||||||
|  |   0x66, 0x53, 0x66, 0x52, 0x66, 0x03, 0xD9, 0x67, 0x66, 0x0F, 0xBE, 0x13, | ||||||
|  |   0x66, 0x49, 0x66, 0x4B, 0x66, 0x83, 0xF9, 0x00, 0x0F, 0x84, 0x0D, 0x00, | ||||||
|  |   0x66, 0xC1, 0xE2, 0x08, 0x67, 0x8A, 0x13, 0x66, 0x4B, 0x66, 0x49, 0xEB, | ||||||
|  |   0xEB, 0x66, 0x8B, 0xCA, 0x66, 0x5A, 0x66, 0x5B, 0xC3, 0x66, 0x53, 0x66, | ||||||
|  |   0x52, 0x66, 0x2B, 0xD2, 0x67, 0x8A, 0x13, 0x66, 0x83, 0xE2, 0x0F, 0x66, | ||||||
|  |   0x2B, 0xC9, 0x67, 0x8A, 0x0B, 0xC0, 0xE9, 0x04, 0x66, 0x83, 0xF9, 0x00, | ||||||
|  |   0x0F, 0x85, 0x08, 0x00, 0x66, 0x2B, 0xC9, 0x66, 0x5A, 0x66, 0x5B, 0xC3, | ||||||
|  |   0x66, 0x03, 0xDA, 0x66, 0x03, 0xD9, 0x67, 0x66, 0x0F, 0xBE, 0x13, 0x66, | ||||||
|  |   0x49, 0x66, 0x4B, 0x66, 0x83, 0xF9, 0x00, 0x0F, 0x84, 0x0D, 0x00, 0x66, | ||||||
|  |   0xC1, 0xE2, 0x08, 0x67, 0x8A, 0x13, 0x66, 0x4B, 0x66, 0x49, 0xEB, 0xEB, | ||||||
|  |   0x66, 0x8B, 0xCA, 0x66, 0x5A, 0x66, 0x5B, 0xC3, 0x66, 0x0B, 0xC9, 0x0F, | ||||||
|  |   0x85, 0x01, 0x00, 0xC3, 0x66, 0x51, 0x66, 0x56, 0x67, 0x83, 0x3E, 0x61, | ||||||
|  |   0x0F, 0x8C, 0x0C, 0x00, 0x67, 0x83, 0x3E, 0x7A, 0x0F, 0x8F, 0x04, 0x00, | ||||||
|  |   0x67, 0x83, 0x2E, 0x20, 0x66, 0x83, 0xC6, 0x02, 0xE2, 0xE6, 0x66, 0x5E, | ||||||
|  |   0x66, 0x59, 0xC3, 0x66, 0x50, 0x66, 0x51, 0x66, 0x8B, 0xD0, 0x66, 0xA1, | ||||||
|  |   0x32, 0x02, 0x67, 0x66, 0x8D, 0x58, 0x10, 0x67, 0x03, 0x43, 0x04, 0x67, | ||||||
|  |   0x66, 0x8D, 0x40, 0x10, 0x66, 0x8B, 0xDA, 0xE8, 0x44, 0xF9, 0x66, 0x0B, | ||||||
|  |   0xC0, 0x0F, 0x84, 0x05, 0x00, 0x66, 0x59, 0x66, 0x59, 0xC3, 0x66, 0xA1, | ||||||
|  |   0x36, 0x02, 0x66, 0x0B, 0xC0, 0x0F, 0x85, 0x08, 0x00, 0x66, 0x59, 0x66, | ||||||
|  |   0x59, 0x66, 0x33, 0xC0, 0xC3, 0x66, 0x8B, 0x16, 0x36, 0x02, 0x67, 0x66, | ||||||
|  |   0x8D, 0x52, 0x10, 0x67, 0x66, 0x8B, 0x42, 0x18, 0x66, 0x33, 0xD2, 0x66, | ||||||
|  |   0xF7, 0x36, 0x6E, 0x02, 0x66, 0x33, 0xF6, 0x66, 0x50, 0x66, 0x56, 0x66, | ||||||
|  |   0x58, 0x66, 0x5E, 0x66, 0x3B, 0xC6, 0x0F, 0x84, 0x3A, 0x00, 0x66, 0x56, | ||||||
|  |   0x66, 0x40, 0x66, 0x50, 0x66, 0x48, 0xE8, 0x1B, 0xFE, 0x72, 0xE8, 0xE8, | ||||||
|  |   0xEB, 0xFD, 0x66, 0x5A, 0x66, 0x5E, 0x66, 0x59, 0x66, 0x5B, 0x66, 0x53, | ||||||
|  |   0x66, 0x51, 0x66, 0x56, 0x66, 0x52, 0x66, 0xA1, 0x46, 0x02, 0x67, 0x66, | ||||||
|  |   0x8D, 0x40, 0x18, 0xE8, 0xD0, 0xF8, 0x66, 0x0B, 0xC0, 0x74, 0xC4, 0x66, | ||||||
|  |   0x59, 0x66, 0x59, 0x66, 0x59, 0x66, 0x59, 0xC3, 0x66, 0x59, 0x66, 0x59, | ||||||
|  |   0x66, 0x33, 0xC0, 0xC3, 0x66, 0x51, 0x66, 0x50, 0x66, 0xB8, 0x05, 0x00, | ||||||
|  |   0x00, 0x00, 0x1E, 0x07, 0x66, 0x8B, 0xF9, 0xE8, 0x8D, 0xFD, 0x66, 0x8B, | ||||||
|  |   0xC1, 0x66, 0xBB, 0x20, 0x00, 0x00, 0x00, 0x66, 0xB9, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x66, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x33, 0xF8, 0x66, 0x5B, | ||||||
|  |   0x66, 0x59, 0x66, 0x85, 0xC0, 0x0F, 0x85, 0x15, 0x00, 0x66, 0x8B, 0xC1, | ||||||
|  |   0x66, 0x0F, 0xB7, 0x0E, 0x10, 0x02, 0x66, 0xBA, 0x12, 0x02, 0x00, 0x00, | ||||||
|  |   0xE8, 0x16, 0xF8, 0xEB, 0x33, 0x90, 0x66, 0x33, 0xD2, 0x66, 0x8B, 0xC1, | ||||||
|  |   0x66, 0x8B, 0xCB, 0x66, 0x50, 0x66, 0x53, 0xE8, 0x23, 0x00, 0x66, 0x5B, | ||||||
|  |   0x66, 0x5F, 0x66, 0x0B, 0xC0, 0x0F, 0x84, 0x17, 0x00, 0x1E, 0x07, 0xE8, | ||||||
|  |   0x35, 0xFD, 0x66, 0x8B, 0xC7, 0x66, 0x0F, 0xB7, 0x0E, 0x10, 0x02, 0x66, | ||||||
|  |   0xBA, 0x12, 0x02, 0x00, 0x00, 0xE8, 0xE1, 0xF7, 0xC3, 0x66, 0x52, 0x66, | ||||||
|  |   0x51, 0x66, 0xBB, 0x20, 0x00, 0x00, 0x00, 0x66, 0xB9, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x66, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xC7, 0xF7, 0x66, 0x0B, | ||||||
|  |   0xC0, 0x0F, 0x84, 0x63, 0x00, 0x66, 0x8B, 0xD8, 0x1E, 0x07, 0x66, 0x8B, | ||||||
|  |   0x3E, 0x1A, 0x02, 0x66, 0x33, 0xC0, 0xE8, 0x59, 0xF8, 0x1E, 0x07, 0x66, | ||||||
|  |   0x8B, 0x1E, 0x1A, 0x02, 0x66, 0x59, 0x66, 0x5A, 0x26, 0x66, 0x39, 0x0F, | ||||||
|  |   0x0F, 0x85, 0x0C, 0x00, 0x26, 0x66, 0x39, 0x57, 0x08, 0x0F, 0x84, 0x31, | ||||||
|  |   0x00, 0xEB, 0x13, 0x90, 0x26, 0x66, 0x83, 0x3F, 0xFF, 0x0F, 0x84, 0x2F, | ||||||
|  |   0x00, 0x26, 0x83, 0x7F, 0x04, 0x00, 0x0F, 0x84, 0x26, 0x00, 0x26, 0x66, | ||||||
|  |   0x0F, 0xB7, 0x47, 0x04, 0x03, 0xD8, 0x8B, 0xC3, 0x25, 0x00, 0x80, 0x74, | ||||||
|  |   0xCB, 0x8C, 0xC0, 0x05, 0x00, 0x08, 0x8E, 0xC0, 0x81, 0xE3, 0xFF, 0x7F, | ||||||
|  |   0xEB, 0xBE, 0x26, 0x66, 0x8B, 0x47, 0x10, 0xC3, 0x66, 0x59, 0x66, 0x5A, | ||||||
|  |   0x66, 0x33, 0xC0, 0xC3, 0x66, 0x50, 0x66, 0x51, 0x66, 0x8B, 0xC7, 0x66, | ||||||
|  |   0xC1, 0xE8, 0x04, 0x06, 0x59, 0x03, 0xC8, 0x51, 0x07, 0x66, 0x83, 0xE7, | ||||||
|  |   0x0F, 0x66, 0x59, 0x66, 0x58, 0xC3, 0x60, 0x06, 0xBE, 0xBD, 0x0D, 0xBF, | ||||||
|  |   0x00, 0x20, 0x1E, 0x07, 0xB9, 0x0D, 0x00, 0x90, 0xF3, 0xA5, 0x07, 0x61, | ||||||
|  |   0xC3, 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, | ||||||
|  |   0x98, 0x76, 0x54, 0x32, 0x10, 0xF0, 0xE1, 0xD2, 0xC3, 0x00, 0x00, 0x00, | ||||||
|  |   0x00, 0x20, 0x20, 0x60, 0x8B, 0x36, 0x18, 0x20, 0x26, 0x8A, 0x05, 0x88, | ||||||
|  |   0x04, 0x47, 0x46, 0x66, 0xFF, 0x06, 0x14, 0x20, 0x81, 0xFE, 0x60, 0x20, | ||||||
|  |   0x75, 0x06, 0xE8, 0x5B, 0x00, 0xBE, 0x20, 0x20, 0xE2, 0xE6, 0x89, 0x36, | ||||||
|  |   0x18, 0x20, 0x61, 0xC3, 0x66, 0x60, 0x8B, 0x36, 0x18, 0x20, 0xB0, 0x80, | ||||||
|  |   0x88, 0x04, 0x46, 0x32, 0xC0, 0x81, 0xFE, 0x60, 0x20, 0x75, 0x06, 0xE8, | ||||||
|  |   0x3A, 0x00, 0xBE, 0x20, 0x20, 0x81, 0xFE, 0x58, 0x20, 0x75, 0xE9, 0x66, | ||||||
|  |   0x33, 0xC0, 0x66, 0xA3, 0x58, 0x20, 0x66, 0xA1, 0x14, 0x20, 0x66, 0xC1, | ||||||
|  |   0xE0, 0x03, 0x66, 0x0F, 0xC8, 0x66, 0xA3, 0x5C, 0x20, 0xE8, 0x18, 0x00, | ||||||
|  |   0xBB, 0x00, 0x20, 0x66, 0x8B, 0x07, 0x66, 0x0F, 0xC8, 0x66, 0x89, 0x07, | ||||||
|  |   0x83, 0xC3, 0x04, 0x81, 0xFB, 0x34, 0x20, 0x75, 0xEE, 0x66, 0x61, 0xC3, | ||||||
|  |   0x66, 0x60, 0xBB, 0x20, 0x20, 0x66, 0x8B, 0x07, 0x66, 0x0F, 0xC8, 0x66, | ||||||
|  |   0x89, 0x07, 0x83, 0xC3, 0x04, 0x81, 0xFB, 0x60, 0x20, 0x75, 0xEE, 0xBB, | ||||||
|  |   0x00, 0x20, 0x66, 0x8B, 0x0F, 0x66, 0x8B, 0x57, 0x04, 0x66, 0x8B, 0x77, | ||||||
|  |   0x08, 0x66, 0x8B, 0x7F, 0x0C, 0x66, 0x8B, 0x6F, 0x10, 0xBB, 0x20, 0x20, | ||||||
|  |   0xC7, 0x06, 0x1A, 0x20, 0x30, 0x0F, 0xC6, 0x06, 0x1C, 0x20, 0x14, 0x90, | ||||||
|  |   0x53, 0x8B, 0x1E, 0x1A, 0x20, 0xFF, 0x17, 0x66, 0x03, 0x47, 0x02, 0x5B, | ||||||
|  |   0x66, 0x03, 0xE8, 0x66, 0x03, 0x2F, 0x66, 0x8B, 0xC1, 0x66, 0xC1, 0xC0, | ||||||
|  |   0x05, 0x66, 0x03, 0xC5, 0x66, 0x8B, 0xEF, 0x66, 0x8B, 0xFE, 0x66, 0x8B, | ||||||
|  |   0xF2, 0x66, 0xC1, 0xC6, 0x1E, 0x66, 0x8B, 0xD1, 0x66, 0x8B, 0xC8, 0x66, | ||||||
|  |   0x8B, 0x07, 0x66, 0x33, 0x47, 0x08, 0x66, 0x33, 0x47, 0x20, 0x66, 0x33, | ||||||
|  |   0x47, 0x34, 0x66, 0xD1, 0xC0, 0x66, 0x89, 0x47, 0x40, 0x83, 0xC3, 0x04, | ||||||
|  |   0xFE, 0x0E, 0x1C, 0x20, 0x75, 0xB2, 0x83, 0x06, 0x1A, 0x20, 0x06, 0x81, | ||||||
|  |   0x3E, 0x1A, 0x20, 0x48, 0x0F, 0x75, 0x9F, 0xBB, 0x00, 0x20, 0x66, 0x01, | ||||||
|  |   0x0F, 0x66, 0x01, 0x57, 0x04, 0x66, 0x01, 0x77, 0x08, 0x66, 0x01, 0x7F, | ||||||
|  |   0x0C, 0x66, 0x01, 0x6F, 0x10, 0x66, 0x61, 0xC3, 0x66, 0x8B, 0xC6, 0x66, | ||||||
|  |   0x33, 0xC7, 0x66, 0x23, 0xC2, 0x66, 0x33, 0xC7, 0xC3, 0x66, 0x8B, 0xC2, | ||||||
|  |   0x66, 0x33, 0xC6, 0x66, 0x33, 0xC7, 0xC3, 0x66, 0x53, 0x66, 0x8B, 0xC2, | ||||||
|  |   0x66, 0x23, 0xC6, 0x66, 0x8B, 0xDA, 0x66, 0x23, 0xDF, 0x66, 0x0B, 0xC3, | ||||||
|  |   0x66, 0x8B, 0xDE, 0x66, 0x23, 0xDF, 0x66, 0x0B, 0xC3, 0x66, 0x5B, 0xC3, | ||||||
|  |   0xFC, 0x0E, 0x99, 0x79, 0x82, 0x5A, 0x09, 0x0F, 0xA1, 0xEB, 0xD9, 0x6E, | ||||||
|  |   0x13, 0x0F, 0xDC, 0xBC, 0x1B, 0x8F, 0x09, 0x0F, 0xD6, 0xC1, 0x62, 0xCA, | ||||||
|  |   0x06, 0x1E, 0x66, 0x60, 0x66, 0x33, 0xDB, 0xB8, 0x00, 0xBB, 0xCD, 0x1A, | ||||||
|  |   0x66, 0x23, 0xC0, 0x0F, 0x85, 0xBB, 0x00, 0x66, 0x81, 0xFB, 0x54, 0x43, | ||||||
|  |   0x50, 0x41, 0x0F, 0x85, 0xB0, 0x00, 0x81, 0xF9, 0x02, 0x01, 0x0F, 0x82, | ||||||
|  |   0xA8, 0x00, 0x66, 0x61, 0x90, 0x1F, 0x07, 0x06, 0x1E, 0x66, 0x60, 0x67, | ||||||
|  |   0x80, 0x7B, 0x08, 0x00, 0x0F, 0x85, 0x0C, 0x00, 0x67, 0x66, 0x8D, 0x53, | ||||||
|  |   0x10, 0x67, 0x66, 0x8B, 0x0A, 0xEB, 0x25, 0x90, 0x67, 0x66, 0x8D, 0x53, | ||||||
|  |   0x10, 0x67, 0x66, 0x8B, 0x4A, 0x28, 0x66, 0x81, 0xF9, 0x00, 0x00, 0x08, | ||||||
|  |   0x00, 0x0F, 0x83, 0x0C, 0x00, 0x67, 0x66, 0x8B, 0x42, 0x2C, 0x66, 0x23, | ||||||
|  |   0xC0, 0x0F, 0x84, 0x03, 0x00, 0x66, 0x33, 0xC9, 0x0E, 0x1F, 0xE8, 0xF5, | ||||||
|  |   0xFD, 0x66, 0x23, 0xC9, 0x0F, 0x84, 0x32, 0x00, 0x66, 0xBA, 0x00, 0x80, | ||||||
|  |   0x00, 0x00, 0x66, 0x3B, 0xCA, 0x0F, 0x86, 0x1F, 0x00, 0x66, 0x2B, 0xCA, | ||||||
|  |   0x06, 0x66, 0x51, 0x66, 0x57, 0x66, 0x52, 0x66, 0x8B, 0xCA, 0xE8, 0xB7, | ||||||
|  |   0xFD, 0xE8, 0xFB, 0xFD, 0x66, 0x5A, 0x66, 0x5F, 0x66, 0x59, 0x07, 0x66, | ||||||
|  |   0x03, 0xFA, 0xEB, 0xDA, 0xE8, 0xA5, 0xFD, 0xE8, 0xE9, 0xFD, 0xE8, 0x0B, | ||||||
|  |   0xFE, 0x0E, 0x07, 0x66, 0xBB, 0x54, 0x43, 0x50, 0x41, 0x66, 0xBF, 0x00, | ||||||
|  |   0x20, 0x00, 0x00, 0x66, 0xB9, 0x14, 0x00, 0x00, 0x00, 0x66, 0xB8, 0x07, | ||||||
|  |   0xBB, 0x00, 0x00, 0x66, 0xBA, 0x0A, 0x00, 0x00, 0x00, 0x66, 0x33, 0xF6, | ||||||
|  |   0xCD, 0x1A, 0x66, 0x61, 0x90, 0x1F, 0x07, 0xC3, 0xA0, 0xF9, 0x01, 0xE9, | ||||||
|  |   0x4B, 0xF1, 0xA0, 0xFA, 0x01, 0xE9, 0x45, 0xF1 | ||||||
|  | }; | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| #define FILE_H | #define FILE_H | ||||||
| 
 | 
 | ||||||
| /* Max valid value of uiLen for contains_data */ | /* Max valid value of uiLen for contains_data */ | ||||||
| #define MAX_DATA_LEN 4096 | #define MAX_DATA_LEN 8192 | ||||||
| 
 | 
 | ||||||
| /* Checks if a file contains a data pattern of length uiLen at position
 | /* Checks if a file contains a data pattern of length uiLen at position
 | ||||||
|    ulPositoin. The file pointer will change when calling this function! */ |    ulPositoin. The file pointer will change when calling this function! */ | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								src/ms-sys/inc/ntfs.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/ms-sys/inc/ntfs.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | ||||||
|  | #ifndef NTFS_H | ||||||
|  | #define NTFS_H | ||||||
|  | 
 | ||||||
|  | #include <stdio.h> | ||||||
|  | 
 | ||||||
|  | /* returns TRUE if the file has an NFTS file system, otherwise FALSE.
 | ||||||
|  |    The file position will change when this function is called! */ | ||||||
|  | int is_ntfs_fs(FILE *fp); | ||||||
|  | 
 | ||||||
|  | /* returns TRUE if the file has a NTFS boot record, otherwise FALSE.
 | ||||||
|  |    The file position will change when this function is called! */ | ||||||
|  | int is_ntfs_br(FILE *fp); | ||||||
|  | 
 | ||||||
|  | /* returns TRUE if the file has an exact match of the NTFS boot record
 | ||||||
|  |    this program would create, otherwise FALSE. | ||||||
|  |    The file position will change when this function is called! */ | ||||||
|  | int entire_ntfs_br_matches(FILE *fp); | ||||||
|  | 
 | ||||||
|  | /* Writes a FAT32 DOS boot record to a file, returns TRUE on success, otherwise
 | ||||||
|  |    FALSE */ | ||||||
|  | int write_ntfs_br(FILE *fp); | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										67
									
								
								src/ms-sys/ntfs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/ms-sys/ntfs.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,67 @@ | ||||||
|  | /******************************************************************
 | ||||||
|  |     Copyright (C) 2012  Pete Batard <pete@akeo.ie> | ||||||
|  |     Based on fat16.c Copyright (C) 2009  Henrik Carlqvist | ||||||
|  | 
 | ||||||
|  |     This program is free software; you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation; either version 2 of the License, or | ||||||
|  |     (at your option) any later version. | ||||||
|  | 
 | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |     GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  |     You should have received a copy of the GNU General Public License | ||||||
|  |     along with this program; if not, write to the Free Software | ||||||
|  |     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||||
|  | ******************************************************************/ | ||||||
|  | 
 | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
|  | #include "file.h" | ||||||
|  | #include "ntfs.h" | ||||||
|  | 
 | ||||||
|  | int is_ntfs_fs(FILE *fp) | ||||||
|  | { | ||||||
|  |    char *szMagic = "NTFS"; | ||||||
|  | 
 | ||||||
|  |    return contains_data(fp, 0x6F, szMagic, strlen(szMagic)); | ||||||
|  | } /* is_ntfs_fs */ | ||||||
|  | 
 | ||||||
|  | int is_ntfs_br(FILE *fp) | ||||||
|  | { | ||||||
|  |    /* A "file" is probably some kind of NTFS boot record if it contains the
 | ||||||
|  |       magic chars 0x55, 0xAA at positions 0x1FE */ | ||||||
|  |    unsigned char aucRef[] = {0x55, 0xAA}; | ||||||
|  |    unsigned char aucMagic[] = {'N','T','F','S','0','0','0','0'}; | ||||||
|  | 
 | ||||||
|  |    if( ! contains_data(fp, 0x1FE, aucRef, sizeof(aucRef))) | ||||||
|  |       return 0; | ||||||
|  |    if( ! contains_data(fp, 0x03, aucMagic, sizeof(aucMagic))) | ||||||
|  |       return 0; | ||||||
|  |    return 1; | ||||||
|  | } /* is_ntfs_br */ | ||||||
|  | 
 | ||||||
|  | int entire_ntfs_br_matches(FILE *fp) | ||||||
|  | { | ||||||
|  |    #include "br_ntfs_0x0.h" | ||||||
|  |    #include "br_ntfs_0x54.h" | ||||||
|  | 
 | ||||||
|  |    return | ||||||
|  |       ( contains_data(fp, 0x0, br_ntfs_0x0, sizeof(br_ntfs_0x0)) && | ||||||
|  | 	/* BIOS Parameter Block might differ between systems */ | ||||||
|  | 	contains_data(fp, 0x54, br_ntfs_0x54, sizeof(br_ntfs_0x54)) ); | ||||||
|  | } /* entire_ntfs_br_matches */ | ||||||
|  | 
 | ||||||
|  | int write_ntfs_br(FILE *fp) | ||||||
|  | { | ||||||
|  |    #include "br_ntfs_0x0.h" | ||||||
|  |    #include "br_ntfs_0x54.h" | ||||||
|  | 
 | ||||||
|  |    return | ||||||
|  | 	 ( write_data(fp, 0x0, br_ntfs_0x0, sizeof(br_ntfs_0x0)) && | ||||||
|  | 	   /* BIOS Parameter Block should not be overwritten */ | ||||||
|  | 	   write_data(fp, 0x54, br_ntfs_0x54, sizeof(br_ntfs_0x54)) ); | ||||||
|  | } /* write_ntsf_br */ | ||||||
							
								
								
									
										31
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										31
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -453,7 +453,7 @@ BOOL CreatePartition(HANDLE hDrive) | ||||||
| 	BOOL r; | 	BOOL r; | ||||||
| 	DWORD size; | 	DWORD size; | ||||||
| 
 | 
 | ||||||
| 	PrintStatus(0, "Partitioning..."); | 	PrintStatus(0, TRUE, "Partitioning..."); | ||||||
| 	DriveLayoutEx->PartitionStyle = PARTITION_STYLE_MBR; | 	DriveLayoutEx->PartitionStyle = PARTITION_STYLE_MBR; | ||||||
| 	DriveLayoutEx->PartitionCount = 4;	// Must be multiple of 4 for MBR
 | 	DriveLayoutEx->PartitionCount = 4;	// Must be multiple of 4 for MBR
 | ||||||
| 	DriveLayoutEx->Mbr.Signature = GetTickCount(); | 	DriveLayoutEx->Mbr.Signature = GetTickCount(); | ||||||
|  | @ -625,7 +625,7 @@ static void InitProgress(void) | ||||||
| 	} | 	} | ||||||
| 	if (IsChecked(IDC_DOS)) { | 	if (IsChecked(IDC_DOS)) { | ||||||
| 		// 1 extra slot for PBR writing
 | 		// 1 extra slot for PBR writing
 | ||||||
| 		// TODO: switch
 | 		// TODO: ISO
 | ||||||
| 		switch (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType))) { | 		switch (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType))) { | ||||||
| 		case DT_WINME: | 		case DT_WINME: | ||||||
| 			nb_slots[OP_DOS] = 3+1; | 			nb_slots[OP_DOS] = 3+1; | ||||||
|  | @ -861,8 +861,8 @@ static void EnableControls(BOOL bEnable) | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), bEnable); | ||||||
| 	if (bEnable) { | 	if (bEnable) { | ||||||
| 		fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | 		fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||||
| 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOS), (fs == FS_FAT16) || (fs == FS_FAT32)); | 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOS), (fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)); | ||||||
| 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOSTYPE), (fs == FS_FAT16) || (fs == FS_FAT32)); | 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOSTYPE), (fs == FS_FAT16) || (fs == FS_FAT32) || (fs == FS_NTFS)); | ||||||
| 	} else { | 	} else { | ||||||
| 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOS), FALSE); | 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOS), FALSE); | ||||||
| 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOSTYPE), FALSE); | 		EnableWindow(GetDlgItem(hMainDialog, IDC_DOSTYPE), FALSE); | ||||||
|  | @ -870,6 +870,8 @@ static void EnableControls(BOOL bEnable) | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_BADBLOCKS), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_BADBLOCKS), bEnable); | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_ABOUT), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_ABOUT), bEnable); | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_START), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_START), bEnable); | ||||||
|  | 	EnableWindow(GetDlgItem(hMainDialog, IDC_SELECT_ISO), bEnable); | ||||||
|  | 	EnableWindow(GetDlgItem(hMainDialog, IDC_NBPASSES), bEnable); | ||||||
| 	SetDlgItemTextA(hMainDialog, IDCANCEL, bEnable?"Close":"Cancel"); | 	SetDlgItemTextA(hMainDialog, IDCANCEL, bEnable?"Close":"Cancel"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -903,7 +905,8 @@ BOOL CALLBACK ISOProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||||
| 		switch (LOWORD(wParam)) { | 		switch (LOWORD(wParam)) { | ||||||
| 		case IDC_ISO_ABORT: | 		case IDC_ISO_ABORT: | ||||||
| 			FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; | 			FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; | ||||||
| 			PrintStatus(0, "Cancelling - please wait..."); | 			PrintStatus(0, FALSE, "Cancelling - please wait..."); | ||||||
|  | 			uprintf("ISO: USER CANCEL\n"); | ||||||
| 			return TRUE; | 			return TRUE; | ||||||
| 		} | 		} | ||||||
| 	case WM_CLOSE:		// prevent closure using Alt-F4
 | 	case WM_CLOSE:		// prevent closure using Alt-F4
 | ||||||
|  | @ -917,11 +920,11 @@ void __cdecl ISOScanThread(void* param) | ||||||
| { | { | ||||||
| 	int i; | 	int i; | ||||||
| //	ExtractISO(ISO_IMAGE, ISO_DEST, TRUE);
 | //	ExtractISO(ISO_IMAGE, ISO_DEST, TRUE);
 | ||||||
| 	PrintStatus(0, "Scanning ISO image..."); | 	PrintStatus(0, TRUE, "Scanning ISO image...\n"); | ||||||
| 	ExtractISO(iso_path, "", TRUE); | 	ExtractISO(iso_path, "", TRUE); | ||||||
| 	uprintf("Projected size: %lld\nHas 4GB: %s\n", iso_report.projected_size, iso_report.has_4GB_file?"TRUE":"FALSE"); | 	uprintf("Projected size: %lld\nHas 4GB: %s\n", iso_report.projected_size, iso_report.has_4GB_file?"TRUE":"FALSE"); | ||||||
| 	for (i=safe_strlen(iso_path); (i>=0)&&(iso_path[i] != '\\'); i--); | 	for (i=safe_strlen(iso_path); (i>=0)&&(iso_path[i] != '\\'); i--); | ||||||
| 	PrintStatus(0, "Using ISO: '%s'", &iso_path[i+1]); | 	PrintStatus(0, TRUE, "Using ISO: '%s'\n", &iso_path[i+1]); | ||||||
| 	_endthread(); | 	_endthread(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1083,7 +1086,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 					// Operation may have completed in the meantime
 | 					// Operation may have completed in the meantime
 | ||||||
| 					if (format_thid != -1L) { | 					if (format_thid != -1L) { | ||||||
| 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; | 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; | ||||||
| 						PrintStatus(0, "Cancelling - please wait..."); | 						PrintStatus(0, FALSE, "Cancelling - please wait..."); | ||||||
|  | 						uprintf("USER CANCEL\n"); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				return (INT_PTR)TRUE; | 				return (INT_PTR)TRUE; | ||||||
|  | @ -1117,7 +1121,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 		case IDC_DEVICE: | 		case IDC_DEVICE: | ||||||
| 			switch (HIWORD(wParam)) { | 			switch (HIWORD(wParam)) { | ||||||
| 			case CBN_SELCHANGE: | 			case CBN_SELCHANGE: | ||||||
| 				PrintStatus(0, "%d device%s found.", ComboBox_GetCount(hDeviceList), | 				PrintStatus(0, TRUE, "%d device%s found.", ComboBox_GetCount(hDeviceList), | ||||||
| 					(ComboBox_GetCount(hDeviceList)!=1)?"s":""); | 					(ComboBox_GetCount(hDeviceList)!=1)?"s":""); | ||||||
| 				PopulateProperties(ComboBox_GetCurSel(hDeviceList)); | 				PopulateProperties(ComboBox_GetCurSel(hDeviceList)); | ||||||
| 				break; | 				break; | ||||||
|  | @ -1127,7 +1131,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 			if (HIWORD(wParam) != CBN_SELCHANGE) | 			if (HIWORD(wParam) != CBN_SELCHANGE) | ||||||
| 				break; | 				break; | ||||||
| 			fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | 			fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); | ||||||
| 			uprintf("fs = %d\n", fs); |  | ||||||
| 			SetClusterSizes(fs); | 			SetClusterSizes(fs); | ||||||
| 			if (((fs == FS_EXFAT) || (fs <0)) && IsWindowEnabled(hDOS)) { | 			if (((fs == FS_EXFAT) || (fs <0)) && IsWindowEnabled(hDOS)) { | ||||||
| 				// unlikely to be supported by BIOSes => don't bother
 | 				// unlikely to be supported by BIOSes => don't bother
 | ||||||
|  | @ -1250,12 +1253,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 		EnableControls(TRUE); | 		EnableControls(TRUE); | ||||||
| 		GetUSBDevices(); | 		GetUSBDevices(); | ||||||
| 		if (!IS_ERROR(FormatStatus)) { | 		if (!IS_ERROR(FormatStatus)) { | ||||||
| 			PrintStatus(0, "DONE"); | 			PrintStatus(0, FALSE, "DONE"); | ||||||
| 		} else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) { | 		} else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) { | ||||||
| 			PrintStatus(0, "Cancelled"); | 			PrintStatus(0, FALSE, "Cancelled"); | ||||||
| 			Notification(MSG_INFO, "Cancelled", "Operation cancelled by the user."); | 			Notification(MSG_INFO, "Cancelled", "Operation cancelled by the user."); | ||||||
| 		} else { | 		} else { | ||||||
| 			PrintStatus(0, "FAILED"); | 			PrintStatus(0, FALSE, "FAILED"); | ||||||
| 			Notification(MSG_ERROR, "Error", "Error: %s", StrError(FormatStatus)); | 			Notification(MSG_ERROR, "Error", "Error: %s", StrError(FormatStatus)); | ||||||
| 		} | 		} | ||||||
| 		if (FormatStatus) { | 		if (FormatStatus) { | ||||||
|  | @ -1332,7 +1335,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine | ||||||
| #ifdef DISABLE_AUTORUN | #ifdef DISABLE_AUTORUN | ||||||
| 			// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
 | 			// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
 | ||||||
| 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) { | 			if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) { | ||||||
| 				PrintStatus(0, "NoDriveTypeAutorun will be deleted on exit."); | 				PrintStatus(0, FALSE, "NoDriveTypeAutorun will be deleted on exit."); | ||||||
| 				existing_key = FALSE; | 				existing_key = FALSE; | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -174,7 +174,7 @@ extern RUFUS_ISO_REPORT iso_report; | ||||||
|  */ |  */ | ||||||
| extern const char *WindowsErrorString(void); | extern const char *WindowsErrorString(void); | ||||||
| extern void DumpBufferHex(void *buf, size_t size); | extern void DumpBufferHex(void *buf, size_t size); | ||||||
| extern void PrintStatus(unsigned int duration, const char *format, ...); | extern void PrintStatus(unsigned int duration, BOOL debug, const char *format, ...); | ||||||
| extern void UpdateProgress(int op, float percent); | extern void UpdateProgress(int op, float percent); | ||||||
| extern const char* StrError(DWORD error_code); | extern const char* StrError(DWORD error_code); | ||||||
| extern void CenterDialog(HWND hDlg); | extern void CenterDialog(HWND hDlg); | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 206, 278 | IDD_DIALOG DIALOGEX 12, 12, 206, 278 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_APPWINDOW | EXSTYLE WS_EX_APPWINDOW | ||||||
| CAPTION "Rufus v1.0.7.124" | CAPTION "Rufus v1.0.7.125" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,236,50,14 |     DEFPUSHBUTTON   "Start",IDC_START,94,236,50,14 | ||||||
|  | @ -71,7 +71,7 @@ BEGIN | ||||||
|     DEFPUSHBUTTON   "OK",IDOK,231,175,50,14,WS_GROUP |     DEFPUSHBUTTON   "OK",IDOK,231,175,50,14,WS_GROUP | ||||||
|     CONTROL         "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL, |     CONTROL         "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL, | ||||||
|                     "SysLink",WS_TABSTOP,46,47,114,9 |                     "SysLink",WS_TABSTOP,46,47,114,9 | ||||||
|     LTEXT           "Version 1.0.7 (Build 124)",IDC_STATIC,46,19,78,8 |     LTEXT           "Version 1.0.7 (Build 125)",IDC_STATIC,46,19,78,8 | ||||||
|     PUSHBUTTON      "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP |     PUSHBUTTON      "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP | ||||||
|     EDITTEXT        IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL |     EDITTEXT        IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL | ||||||
|     LTEXT           "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8 |     LTEXT           "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8 | ||||||
|  | @ -222,8 +222,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 1,0,7,124 |  FILEVERSION 1,0,7,125 | ||||||
|  PRODUCTVERSION 1,0,7,124 |  PRODUCTVERSION 1,0,7,125 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -240,13 +240,13 @@ BEGIN | ||||||
|         BEGIN |         BEGIN | ||||||
|             VALUE "CompanyName", "akeo.ie" |             VALUE "CompanyName", "akeo.ie" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "1.0.7.124" |             VALUE "FileVersion", "1.0.7.125" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)" | ||||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" |             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||||
|             VALUE "OriginalFilename", "rufus.exe" |             VALUE "OriginalFilename", "rufus.exe" | ||||||
|             VALUE "ProductName", "Rufus" |             VALUE "ProductName", "Rufus" | ||||||
|             VALUE "ProductVersion", "1.0.7.124" |             VALUE "ProductVersion", "1.0.7.125" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
|  | @ -137,7 +137,7 @@ static void CALLBACK PrintStatusTimeout(HWND hwnd, UINT uMsg, UINT_PTR idEvent, | ||||||
| 	KillTimer(hMainDialog, TID_MESSAGE); | 	KillTimer(hMainDialog, TID_MESSAGE); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PrintStatus(unsigned int duration, const char *format, ...) | void PrintStatus(unsigned int duration, BOOL debug, const char *format, ...) | ||||||
| { | { | ||||||
| 	char *p = szStatusMessage; | 	char *p = szStatusMessage; | ||||||
| 	va_list args; | 	va_list args; | ||||||
|  | @ -154,6 +154,9 @@ void PrintStatus(unsigned int duration, const char *format, ...) | ||||||
| 
 | 
 | ||||||
| 	*p   = '\0'; | 	*p   = '\0'; | ||||||
| 
 | 
 | ||||||
|  | 	if (debug) | ||||||
|  | 		uprintf("%s\n", szStatusMessage); | ||||||
|  | 
 | ||||||
| 	if ((duration) || (!bStatusTimerArmed)) { | 	if ((duration) || (!bStatusTimerArmed)) { | ||||||
| 		SetDlgItemTextU(hMainDialog, IDC_STATUS, szStatusMessage); | 		SetDlgItemTextU(hMainDialog, IDC_STATUS, szStatusMessage); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue