mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[fat] use ms-sys' partition_info source to correct Disk Drive ID
* Disk Drive ID fixup for FAT32 was already available in ms-sys with option -p * modified code to add FAT16 as well as FAT32 support as well as minor fixes * reverts previous patch write_fat_32_br() and write_fat_16_br()
This commit is contained in:
		
							parent
							
								
									0600005a09
								
							
						
					
					
						commit
						ed4297609e
					
				
					 12 changed files with 126 additions and 28 deletions
				
			
		
							
								
								
									
										4
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								README
									
										
									
									
									
								
							|  | @ -10,9 +10,11 @@ Features: | ||||||
| Compilation: | Compilation: | ||||||
|   Use either Visual Studio 2010, WDK (Windows Driver Kit) or MinGW and then |   Use either Visual Studio 2010, WDK (Windows Driver Kit) or MinGW and then | ||||||
|   invoke the .sln, wdk_build.cmd or configure/make respectively. |   invoke the .sln, wdk_build.cmd or configure/make respectively. | ||||||
|  |   Remember that you can get plenty of useful information about what Rufus  | ||||||
|  |   is doing through a Windows debugger such as DebugView. | ||||||
| 
 | 
 | ||||||
| More info: | More info: | ||||||
|   https://github.com/pbatard/rufus/wiki/Rufus |   http://rufus.akeo.ie | ||||||
| 
 | 
 | ||||||
| Enhancements/Bugs | Enhancements/Bugs | ||||||
|   https://github.com/pbatard/rufus/issues |   https://github.com/pbatard/rufus/issues | ||||||
|  |  | ||||||
|  | @ -155,6 +155,7 @@ | ||||||
|     <ClCompile Include="..\file.c" /> |     <ClCompile Include="..\file.c" /> | ||||||
|     <ClCompile Include="..\format.c" /> |     <ClCompile Include="..\format.c" /> | ||||||
|     <ClCompile Include="..\msdos.c" /> |     <ClCompile Include="..\msdos.c" /> | ||||||
|  |     <ClCompile Include="..\partition_info.c" /> | ||||||
|     <ClCompile Include="..\rufus.c" /> |     <ClCompile Include="..\rufus.c" /> | ||||||
|     <ClCompile Include="..\stdio.c" /> |     <ClCompile Include="..\stdio.c" /> | ||||||
|     <ClCompile Include="..\stdlg.c" /> |     <ClCompile Include="..\stdlg.c" /> | ||||||
|  | @ -190,6 +191,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\partition_info.h" /> | ||||||
|     <ClInclude Include="..\msapi_utf8.h" /> |     <ClInclude Include="..\msapi_utf8.h" /> | ||||||
|     <ClInclude Include="..\msdos.h" /> |     <ClInclude Include="..\msdos.h" /> | ||||||
|     <ClInclude Include="..\rufus.h" /> |     <ClInclude Include="..\rufus.h" /> | ||||||
|  |  | ||||||
|  | @ -54,6 +54,9 @@ | ||||||
|     <ClCompile Include="..\badblocks.c"> |     <ClCompile Include="..\badblocks.c"> | ||||||
|       <Filter>Source Files</Filter> |       <Filter>Source Files</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\partition_info.c"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="..\rufus.h"> |     <ClInclude Include="..\rufus.h"> | ||||||
|  | @ -161,6 +164,9 @@ | ||||||
|     <ClInclude Include="..\badblocks.h"> |     <ClInclude Include="..\badblocks.h"> | ||||||
|       <Filter>Header Files</Filter> |       <Filter>Header Files</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\partition_info.h"> | ||||||
|  |       <Filter>Header Files\ms-sys inc</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <None Include="..\rufus.ico"> |     <None Include="..\rufus.ico"> | ||||||
|  |  | ||||||
|  | @ -35,4 +35,5 @@ SOURCES=rufus.c     \ | ||||||
|         fat12.c     \ |         fat12.c     \ | ||||||
|         fat16.c     \ |         fat16.c     \ | ||||||
|         fat32.c     \ |         fat32.c     \ | ||||||
|  |         partition_info.c \ | ||||||
|         rufus.rc |         rufus.rc | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ pkg_v_rc_0 = @echo "  RC     $@"; | ||||||
| %_rc.o: %.rc | %_rc.o: %.rc | ||||||
| 	$(pkg_v_rc)$(WINDRES) -i $< -o $@ | 	$(pkg_v_rc)$(WINDRES) -i $< -o $@ | ||||||
| 
 | 
 | ||||||
| rufus_SOURCES = fat12.c fat16.c fat32.c br.c file.c drive.c msdos.c badblocks.c format.c stdio.c stdlg.c rufus.c | rufus_SOURCES = fat12.c fat16.c fat32.c partition_info.c br.c file.c drive.c msdos.c badblocks.c format.c stdio.c stdlg.c rufus.c | ||||||
| rufus_CFLAGS = -I./inc $(ARCH_CFLAGS) $(AM_CFLAGS) | rufus_CFLAGS = -I./inc $(ARCH_CFLAGS) $(AM_CFLAGS) | ||||||
| rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | ||||||
| rufus_LDADD = rufus_rc.o -lsetupapi -lole32 -lgdi32 | rufus_LDADD = rufus_rc.o -lsetupapi -lole32 -lgdi32 | ||||||
|  |  | ||||||
|  | @ -46,11 +46,11 @@ CONFIG_CLEAN_FILES = | ||||||
| CONFIG_CLEAN_VPATH_FILES = | CONFIG_CLEAN_VPATH_FILES = | ||||||
| PROGRAMS = $(noinst_PROGRAMS) | PROGRAMS = $(noinst_PROGRAMS) | ||||||
| am_rufus_OBJECTS = rufus-fat12.$(OBJEXT) rufus-fat16.$(OBJEXT) \
 | am_rufus_OBJECTS = rufus-fat12.$(OBJEXT) rufus-fat16.$(OBJEXT) \
 | ||||||
| 	rufus-fat32.$(OBJEXT) rufus-br.$(OBJEXT) rufus-file.$(OBJEXT) \
 | 	rufus-fat32.$(OBJEXT) rufus-partition_info.$(OBJEXT) \
 | ||||||
| 	rufus-drive.$(OBJEXT) rufus-msdos.$(OBJEXT) \
 | 	rufus-br.$(OBJEXT) rufus-file.$(OBJEXT) rufus-drive.$(OBJEXT) \
 | ||||||
| 	rufus-badblocks.$(OBJEXT) rufus-format.$(OBJEXT) \
 | 	rufus-msdos.$(OBJEXT) rufus-badblocks.$(OBJEXT) \
 | ||||||
| 	rufus-stdio.$(OBJEXT) rufus-stdlg.$(OBJEXT) \
 | 	rufus-format.$(OBJEXT) rufus-stdio.$(OBJEXT) \
 | ||||||
| 	rufus-rufus.$(OBJEXT) | 	rufus-stdlg.$(OBJEXT) rufus-rufus.$(OBJEXT) | ||||||
| rufus_OBJECTS = $(am_rufus_OBJECTS) | rufus_OBJECTS = $(am_rufus_OBJECTS) | ||||||
| rufus_DEPENDENCIES = rufus_rc.o | rufus_DEPENDENCIES = rufus_rc.o | ||||||
| rufus_LINK = $(CCLD) $(rufus_CFLAGS) $(CFLAGS) $(rufus_LDFLAGS) \
 | rufus_LINK = $(CCLD) $(rufus_CFLAGS) $(CFLAGS) $(rufus_LDFLAGS) \
 | ||||||
|  | @ -168,7 +168,7 @@ top_srcdir = @top_srcdir@ | ||||||
| pkg_v_rc = $(pkg_v_rc_$(V)) | pkg_v_rc = $(pkg_v_rc_$(V)) | ||||||
| pkg_v_rc_ = $(pkg_v_rc_$(AM_DEFAULT_VERBOSITY)) | pkg_v_rc_ = $(pkg_v_rc_$(AM_DEFAULT_VERBOSITY)) | ||||||
| pkg_v_rc_0 = @echo "  RC     $@"; | pkg_v_rc_0 = @echo "  RC     $@"; | ||||||
| rufus_SOURCES = fat12.c fat16.c fat32.c br.c file.c drive.c msdos.c badblocks.c format.c stdio.c stdlg.c rufus.c | rufus_SOURCES = fat12.c fat16.c fat32.c partition_info.c br.c file.c drive.c msdos.c badblocks.c format.c stdio.c stdlg.c rufus.c | ||||||
| rufus_CFLAGS = -I./inc $(ARCH_CFLAGS) $(AM_CFLAGS) | rufus_CFLAGS = -I./inc $(ARCH_CFLAGS) $(AM_CFLAGS) | ||||||
| rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | ||||||
| rufus_LDADD = rufus_rc.o -lsetupapi -lole32 -lgdi32 | rufus_LDADD = rufus_rc.o -lsetupapi -lole32 -lgdi32 | ||||||
|  | @ -251,6 +251,14 @@ rufus-fat32.obj: fat32.c | ||||||
| 	$(AM_V_CC) @AM_BACKSLASH@ | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
| 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-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) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-fat32.obj `if test -f 'fat32.c'; then $(CYGPATH_W) 'fat32.c'; else $(CYGPATH_W) '$(srcdir)/fat32.c'; fi` | ||||||
| 
 | 
 | ||||||
|  | rufus-partition_info.o: partition_info.c | ||||||
|  | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
|  | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-partition_info.o `test -f 'partition_info.c' || echo '$(srcdir)/'`partition_info.c | ||||||
|  | 
 | ||||||
|  | rufus-partition_info.obj: partition_info.c | ||||||
|  | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
|  | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-partition_info.obj `if test -f 'partition_info.c'; then $(CYGPATH_W) 'partition_info.c'; else $(CYGPATH_W) '$(srcdir)/partition_info.c'; fi` | ||||||
|  | 
 | ||||||
| rufus-br.o: br.c | rufus-br.o: br.c | ||||||
| 	$(AM_V_CC) @AM_BACKSLASH@ | 	$(AM_V_CC) @AM_BACKSLASH@ | ||||||
| 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-br.o `test -f 'br.c' || echo '$(srcdir)/'`br.c | 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-br.o `test -f 'br.c' || echo '$(srcdir)/'`br.c | ||||||
|  |  | ||||||
|  | @ -58,23 +58,18 @@ int write_fat_16_br(FILE *fp, int bKeepLabel) | ||||||
|    #include "label_11_char.h" |    #include "label_11_char.h" | ||||||
|    #include "br_fat16_0x0.h" |    #include "br_fat16_0x0.h" | ||||||
|    #include "br_fat16_0x3e.h" |    #include "br_fat16_0x3e.h" | ||||||
|    const unsigned char offset_x24 = 0x80; |  | ||||||
| 
 | 
 | ||||||
|    if(bKeepLabel) |    if(bKeepLabel) | ||||||
|       return |       return | ||||||
| 	 ( write_data(fp, 0x0, br_fat16_0x0, sizeof(br_fat16_0x0)) && | 	 ( write_data(fp, 0x0, br_fat16_0x0, sizeof(br_fat16_0x0)) && | ||||||
| 	   /* BIOS Parameter Block should not be overwritten */ | 	   /* BIOS Parameter Block should not be overwritten */ | ||||||
| 	   write_data(fp, 0x3e, br_fat16_0x3e, sizeof(br_fat16_0x3e)) && | 	   write_data(fp, 0x3e, br_fat16_0x3e, sizeof(br_fat16_0x3e)) ); | ||||||
| 	   /* except offset 0x24 which may have to be corrected */ |  | ||||||
| 	   write_data(fp, 0x24, &offset_x24, 1) ); |  | ||||||
|    else |    else | ||||||
|       return |       return | ||||||
| 	 ( write_data(fp, 0x0, br_fat16_0x0, sizeof(br_fat16_0x0)) && | 	 ( write_data(fp, 0x0, br_fat16_0x0, sizeof(br_fat16_0x0)) && | ||||||
| 	   /* BIOS Parameter Block should not be overwritten */ | 	   /* BIOS Parameter Block should not be overwritten */ | ||||||
| 	   write_data(fp, 0x2b, label_11_char, sizeof(label_11_char)) && | 	   write_data(fp, 0x2b, label_11_char, sizeof(label_11_char)) && | ||||||
| 	   write_data(fp, 0x3e, br_fat16_0x3e, sizeof(br_fat16_0x3e)) && | 	   write_data(fp, 0x3e, br_fat16_0x3e, sizeof(br_fat16_0x3e)) ); | ||||||
| 	   /* except offset 0x24 which may have to be corrected */ |  | ||||||
| 	   write_data(fp, 0x24, &offset_x24, 1) ); |  | ||||||
| } /* write_fat_16_br */ | } /* write_fat_16_br */ | ||||||
| 
 | 
 | ||||||
| int entire_fat_16_fd_br_matches(FILE *fp) | int entire_fat_16_fd_br_matches(FILE *fp) | ||||||
|  |  | ||||||
|  | @ -64,15 +64,12 @@ int write_fat_32_br(FILE *fp, int bKeepLabel) | ||||||
|    #include "br_fat32_0x0.h" |    #include "br_fat32_0x0.h" | ||||||
|    #include "br_fat32_0x52.h" |    #include "br_fat32_0x52.h" | ||||||
|    #include "br_fat32_0x3f0.h" |    #include "br_fat32_0x3f0.h" | ||||||
|    const unsigned char offset_x40 = 0x80; |  | ||||||
| 
 | 
 | ||||||
|    if(bKeepLabel) |    if(bKeepLabel) | ||||||
|       return |       return | ||||||
| 	 ( write_data(fp, 0x0, br_fat32_0x0, sizeof(br_fat32_0x0)) && | 	 ( write_data(fp, 0x0, br_fat32_0x0, sizeof(br_fat32_0x0)) && | ||||||
| 	   /* BIOS Parameter Block should not be overwritten */ | 	   /* BIOS Parameter Block should not be overwritten */ | ||||||
| 	   write_data(fp, 0x52, br_fat32_0x52, sizeof(br_fat32_0x52)) && | 	   write_data(fp, 0x52, br_fat32_0x52, sizeof(br_fat32_0x52)) && | ||||||
| 	   /* except offset 0x40 which may have to be corrected */ |  | ||||||
| 	   write_data(fp, 0x40, &offset_x40, 1) && |  | ||||||
| 	   /* Cluster information is not overwritten, however, it would bo OK
 | 	   /* Cluster information is not overwritten, however, it would bo OK
 | ||||||
| 	      to write 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff here. */ | 	      to write 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff here. */ | ||||||
| 	   write_data(fp, 0x3f0, br_fat32_0x3f0, sizeof(br_fat32_0x3f0)) ); | 	   write_data(fp, 0x3f0, br_fat32_0x3f0, sizeof(br_fat32_0x3f0)) ); | ||||||
|  | @ -82,8 +79,6 @@ int write_fat_32_br(FILE *fp, int bKeepLabel) | ||||||
| 	   /* BIOS Parameter Block should not be overwritten */ | 	   /* BIOS Parameter Block should not be overwritten */ | ||||||
| 	   write_data(fp, 0x47, label_11_char, sizeof(label_11_char)) && | 	   write_data(fp, 0x47, label_11_char, sizeof(label_11_char)) && | ||||||
| 	   write_data(fp, 0x52, br_fat32_0x52, sizeof(br_fat32_0x52)) && | 	   write_data(fp, 0x52, br_fat32_0x52, sizeof(br_fat32_0x52)) && | ||||||
| 	  /* except offset 0x40 which may have to be corrected */ |  | ||||||
| 	   write_data(fp, 0x40, &offset_x40, 1) && |  | ||||||
| 	   /* Cluster information is not overwritten, however, it would bo OK
 | 	   /* Cluster information is not overwritten, however, it would bo OK
 | ||||||
| 	      to write 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff here. */ | 	      to write 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff here. */ | ||||||
| 	   write_data(fp, 0x3f0, br_fat32_0x3f0, sizeof(br_fat32_0x3f0)) ); | 	   write_data(fp, 0x3f0, br_fat32_0x3f0, sizeof(br_fat32_0x3f0)) ); | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								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 "partition_info.h" | ||||||
| #include "file.h" | #include "file.h" | ||||||
| #include "format.h" | #include "format.h" | ||||||
| #include "badblocks.h" | #include "badblocks.h" | ||||||
|  | @ -325,6 +326,7 @@ static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
| 	fake_fd._ptr = (char*)hLogicalVolume; | 	fake_fd._ptr = (char*)hLogicalVolume; | ||||||
| 	fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector; | 	fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector; | ||||||
| 
 | 
 | ||||||
|  | 	// TODO: call write_partition_number_of_heads() and write_partition_start_sector_number()?
 | ||||||
| 	switch (ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem))) { | 	switch (ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem))) { | ||||||
| 	case FS_FAT16: | 	case FS_FAT16: | ||||||
| 		if (!is_fat_16_fs(&fake_fd)) { | 		if (!is_fat_16_fs(&fake_fd)) { | ||||||
|  | @ -332,7 +334,9 @@ static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 		uprintf("Confirmed new volume has a FAT16 boot sector\n"); | 		uprintf("Confirmed new volume has a FAT16 boot sector\n"); | ||||||
| 		if (!write_fat_16_br(&fake_fd, 0)) | 		if (!write_fat_16_br(&fake_fd, 0) || | ||||||
|  | 			// Disk Drive ID needs to be corrected on XP
 | ||||||
|  | 			!write_partition_physical_disk_drive_id_fat16(&fake_fd)) | ||||||
| 			break; | 			break; | ||||||
| 		return TRUE; | 		return TRUE; | ||||||
| 	case FS_FAT32: | 	case FS_FAT32: | ||||||
|  | @ -343,7 +347,9 @@ static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
| 			} | 			} | ||||||
| 			uprintf("Confirmed new volume has a %s FAT32 boot sector\n", i?"secondary":"primary"); | 			uprintf("Confirmed new volume has a %s FAT32 boot sector\n", i?"secondary":"primary"); | ||||||
| 			uprintf("Setting %s FAT32 boot sector for DOS boot...\n", i?"secondary":"primary"); | 			uprintf("Setting %s FAT32 boot sector for DOS boot...\n", i?"secondary":"primary"); | ||||||
| 			if (!write_fat_32_br(&fake_fd, 0)) | 			if (!write_fat_32_br(&fake_fd, 0) || | ||||||
|  | 				// Disk Drive ID needs to be corrected on XP
 | ||||||
|  | 				!write_partition_physical_disk_drive_id_fat32(&fake_fd)) | ||||||
| 				break; | 				break; | ||||||
| 			fake_fd._cnt += 6 * (int)SelectedDrive.Geometry.BytesPerSector; | 			fake_fd._cnt += 6 * (int)SelectedDrive.Geometry.BytesPerSector; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
							
								
								
									
										16
									
								
								src/inc/partition_info.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/inc/partition_info.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | #ifndef PARTITION_INFO_H | ||||||
|  | #define PARTITION_INFO_H | ||||||
|  | 
 | ||||||
|  | /* Writes the number of heads to a partition
 | ||||||
|  |    returns TRUE on success, otherwise FALSE */ | ||||||
|  | int write_partition_number_of_heads(FILE *fp, int iHeads); | ||||||
|  | 
 | ||||||
|  | /* Writes the start sector number to a partition (also known as
 | ||||||
|  |    "number of hidden sectors"), returns TRUE on success, otherwise FALSE */ | ||||||
|  | int write_partition_start_sector_number(FILE *fp, int iStartSector); | ||||||
|  | 
 | ||||||
|  | /* Writes a physical disk drive id of 0x80 (for C:) to a partition */ | ||||||
|  | int write_partition_physical_disk_drive_id_fat16(FILE *fp); | ||||||
|  | int write_partition_physical_disk_drive_id_fat32(FILE *fp); | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										67
									
								
								src/partition_info.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/partition_info.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,67 @@ | ||||||
|  | /******************************************************************
 | ||||||
|  |     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 "file.h" | ||||||
|  | #include "partition_info.h" | ||||||
|  | 
 | ||||||
|  | int write_partition_number_of_heads(FILE *fp, int iHeads) | ||||||
|  | { | ||||||
|  |    unsigned char aucBuf[2]; | ||||||
|  |    unsigned short s = (unsigned short) iHeads; | ||||||
|  | 
 | ||||||
|  |    if(!s) | ||||||
|  |       return 0; | ||||||
|  |    /* Converting a number like this is not necessary as long as we are on
 | ||||||
|  |       i386 compatible CPUs, however, the following code might make the program | ||||||
|  |       more portable... */ | ||||||
|  |    aucBuf[0] = (unsigned char)(s & 0xff); | ||||||
|  |    aucBuf[1] = (unsigned char)((s & 0xff00) >> 8); | ||||||
|  |    return write_data(fp, 0x1a, aucBuf, 2); | ||||||
|  | } /* write_partition_number_of_heads */ | ||||||
|  | 
 | ||||||
|  | int write_partition_start_sector_number(FILE *fp, int iStartSector) | ||||||
|  | { | ||||||
|  |    unsigned char aucBuf[4]; | ||||||
|  |    unsigned long l = (unsigned long)iStartSector; | ||||||
|  | 
 | ||||||
|  |    if(!l) | ||||||
|  |       return 0; | ||||||
|  |    /* Converting a number like this is not necessary as long as we are on
 | ||||||
|  |       i386 compatible CPUs, however, the following code might make the program | ||||||
|  |       more portable... */ | ||||||
|  |    aucBuf[0] = (unsigned char)(l & 0xff); | ||||||
|  |    aucBuf[1] = (unsigned char)((l & 0xff00) >> 8); | ||||||
|  |    aucBuf[2] = (unsigned char)((l & 0xff0000) >> 16); | ||||||
|  |    aucBuf[3] = (unsigned char)((l & 0xff000000) >> 24); | ||||||
|  |    return write_data(fp, 0x1c, aucBuf, 4); | ||||||
|  | } /* write_partition_start_sector_number */ | ||||||
|  | 
 | ||||||
|  | int write_partition_physical_disk_drive_id_fat32(FILE *fp) | ||||||
|  | { | ||||||
|  |    unsigned char ucId = 0x80; /* C: */ | ||||||
|  |     | ||||||
|  |    return write_data(fp, 0x40, &ucId, 1); | ||||||
|  | } /* write_partition_physical_disk_drive_id_fat32 */ | ||||||
|  | 
 | ||||||
|  | int write_partition_physical_disk_drive_id_fat16(FILE *fp) | ||||||
|  | { | ||||||
|  |    unsigned char ucId = 0x80; /* C: */ | ||||||
|  |     | ||||||
|  |    return write_data(fp, 0x24, &ucId, 1); | ||||||
|  | } /* write_partition_physical_disk_drive_id_fat16 */ | ||||||
							
								
								
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -30,7 +30,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 | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_APPWINDOW | EXSTYLE WS_EX_APPWINDOW | ||||||
| CAPTION "Rufus v1.0.3.94" | CAPTION "Rufus v1.0.3.95" | ||||||
| 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 | ||||||
|  | @ -64,7 +64,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.3 (Build 94)",IDC_STATIC,46,19,78,8 |     LTEXT           "Version 1.0.3 (Build 95)",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 | ||||||
|  | @ -163,8 +163,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 1,0,3,94 |  FILEVERSION 1,0,3,95 | ||||||
|  PRODUCTVERSION 1,0,3,94 |  PRODUCTVERSION 1,0,3,95 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -181,13 +181,13 @@ BEGIN | ||||||
|         BEGIN |         BEGIN | ||||||
|             VALUE "CompanyName", "akeo.ie" |             VALUE "CompanyName", "akeo.ie" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "1.0.3.94" |             VALUE "FileVersion", "1.0.3.95" | ||||||
|             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.3.94" |             VALUE "ProductVersion", "1.0.3.95" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue