mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[enum] remove STORAGE_DEVICE_DESCRIPTOR query
This commit is contained in:
		
							parent
							
								
									621721b547
								
							
						
					
					
						commit
						ef1922c3ac
					
				
					 1 changed files with 1 additions and 35 deletions
				
			
		
							
								
								
									
										36
									
								
								usbdos.c
									
										
									
									
									
								
							
							
						
						
									
										36
									
								
								usbdos.c
									
										
									
									
									
								
							|  | @ -162,15 +162,12 @@ static BOOL GetUSBDevices(void) | ||||||
| 	SP_DEVICE_INTERFACE_DATA devint_data; | 	SP_DEVICE_INTERFACE_DATA devint_data; | ||||||
| 	PSP_DEVICE_INTERFACE_DETAIL_DATA_A devint_detail_data; | 	PSP_DEVICE_INTERFACE_DETAIL_DATA_A devint_detail_data; | ||||||
| 	STORAGE_DEVICE_NUMBER storage_device; | 	STORAGE_DEVICE_NUMBER storage_device; | ||||||
| 	STORAGE_PROPERTY_QUERY storage_query; |  | ||||||
| 	STORAGE_DESCRIPTOR_HEADER storage_descriptor_header; |  | ||||||
| 	PSTORAGE_DEVICE_DESCRIPTOR storage_descriptor; |  | ||||||
| 	BYTE geometry[128]; | 	BYTE geometry[128]; | ||||||
| 	LONGLONG disk_size; | 	LONGLONG disk_size; | ||||||
| 	DWORD size, i, j, datatype; | 	DWORD size, i, j, datatype; | ||||||
| 	HANDLE hDrive; | 	HANDLE hDrive; | ||||||
| 	char drive_letter; | 	char drive_letter; | ||||||
| 	char *label, entry[MAX_PATH], buffer[MAX_PATH], *tmp; | 	char *label, entry[MAX_PATH], buffer[MAX_PATH]; | ||||||
| 
 | 
 | ||||||
| 	IGNORE_RETVAL(ComboBox_ResetContent(hDeviceList)); | 	IGNORE_RETVAL(ComboBox_ResetContent(hDeviceList)); | ||||||
| 
 | 
 | ||||||
|  | @ -202,11 +199,9 @@ static BOOL GetUSBDevices(void) | ||||||
| 		devint_data.cbSize = sizeof(devint_data); | 		devint_data.cbSize = sizeof(devint_data); | ||||||
| 		hDrive = INVALID_HANDLE_VALUE; | 		hDrive = INVALID_HANDLE_VALUE; | ||||||
| 		devint_detail_data = NULL; | 		devint_detail_data = NULL; | ||||||
| 		storage_descriptor = NULL; |  | ||||||
| 		for (j=0; ;j++) { | 		for (j=0; ;j++) { | ||||||
| 			safe_closehandle(hDrive); | 			safe_closehandle(hDrive); | ||||||
| 			safe_free(devint_detail_data); | 			safe_free(devint_detail_data); | ||||||
| 			safe_free(storage_descriptor); |  | ||||||
| 
 | 
 | ||||||
| 			if (!SetupDiEnumDeviceInterfaces(dev_info, &dev_info_data, &GUID_DEVINTERFACE_DISK, j, &devint_data)) { | 			if (!SetupDiEnumDeviceInterfaces(dev_info, &dev_info_data, &GUID_DEVINTERFACE_DISK, j, &devint_data)) { | ||||||
| 				if(GetLastError() != ERROR_NO_MORE_ITEMS) { | 				if(GetLastError() != ERROR_NO_MORE_ITEMS) { | ||||||
|  | @ -247,35 +242,6 @@ static BOOL GetUSBDevices(void) | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			storage_query.PropertyId =  StorageDeviceProperty; |  | ||||||
| 			storage_query.QueryType = PropertyStandardQuery; |  | ||||||
| 			r = DeviceIoControl(hDrive, IOCTL_STORAGE_QUERY_PROPERTY,  |  | ||||||
| 						&storage_query, sizeof(storage_query), |  | ||||||
| 						&storage_descriptor_header, sizeof(storage_descriptor_header), |  | ||||||
| 						&size, NULL ); |  | ||||||
| 			if (!r || size <= 0) { |  | ||||||
| 				uprintf("IOCTL_STORAGE_QUERY_PROPERTY->STORAGE_DEVICE_DESCRIPTOR (dummy) failed: %s\n", WindowsErrorString(0)); |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
| 			storage_descriptor = (PSTORAGE_DEVICE_DESCRIPTOR)calloc(1, storage_descriptor_header.Size); |  | ||||||
| 			if (storage_descriptor == NULL) { |  | ||||||
| 				uprintf("unable to allocate memory for STORAGE_DEVICE_DESCRIPTOR\n"); |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
| 			r = DeviceIoControl(hDrive, IOCTL_STORAGE_QUERY_PROPERTY,  |  | ||||||
| 						&storage_query, sizeof(storage_query), |  | ||||||
| 						storage_descriptor, storage_descriptor_header.Size, |  | ||||||
| 						&size, NULL ); |  | ||||||
| 			if (!r || size <= 0) { |  | ||||||
| 				uprintf("IOCTL_STORAGE_QUERY_PROPERTY->STORAGE_DEVICE_DESCRIPTOR (actual) failed: %s\n", WindowsErrorString(0)); |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
| 			tmp = (char*)storage_descriptor; |  | ||||||
| 			uprintf("%s:%s:%s:%s\n", storage_descriptor->VendorIdOffset?&tmp[storage_descriptor->VendorIdOffset]:"", |  | ||||||
| 				storage_descriptor->ProductIdOffset?&tmp[storage_descriptor->ProductIdOffset]:"", |  | ||||||
| 				storage_descriptor->ProductRevisionOffset?&tmp[storage_descriptor->ProductRevisionOffset]:"", |  | ||||||
| 				storage_descriptor->SerialNumberOffset?&tmp[storage_descriptor->SerialNumberOffset]:""); |  | ||||||
| 
 |  | ||||||
| 			r = DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,  | 			r = DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,  | ||||||
| 						NULL, 0, geometry, sizeof(geometry), | 						NULL, 0, geometry, sizeof(geometry), | ||||||
| 						&size, NULL ); | 						&size, NULL ); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue