* fhandler.h (class fhandler_dev_raw): Delete current_position and

eof_detected status flag.  Delete is_eom and is_eof methods.
	Move drive_size, bytes_per_sector, eom_detected status flag, as well
	as the methods read_file, write_file, raw_read and raw_write to ...
	(class fhandler_dev_floppy): ... here. Remove is_eom and is_eof
	methods.  Add dup method.
	* fhandler_floppy.cc (IS_EOM): New macro.
	(fhandler_dev_floppy::is_eom): Remove.
	(fhandler_dev_floppy::is_eof): Remove.
	(fhandler_dev_floppy::fhandler_dev_floppy): Initialize status flags.
	(fhandler_dev_floppy::get_drive_info): Only call EX functions on
	systems supporting them and stop suffering strange delays.
	(fhandler_dev_floppy::read_file): Move here, drop setting
	current_position.
	(fhandler_dev_floppy::write_file): Move here, drop setting
	current_position.
	(fhandler_dev_floppy::open): Rearrange comment.
	(fhandler_dev_floppy::dup): New method.
	(fhandler_dev_floppy::get_current_position): New inline method.  Use
	instead of former current_position were appropriate.
	(fhandler_dev_floppy::raw_read): Move here.  Drop EOF handling.
	(fhandler_dev_floppy::raw_write): Move here.  Drop EOF handling.
	(fhandler_dev_floppy::lseek): Remove useless conditions.  Convert
	sector_aligned_offset to LARGE_INTEGER to improve SetFilePointer call.
	(fhandler_dev_floppy::ioctl): Move blocksize check in RDSETBLK case
	to here.
	* fhandler_raw.cc (fhandler_dev_raw::is_eom): Remove.
	(fhandler_dev_raw::is_eof): Remove.
	(fhandler_dev_raw::write_file): Remove.
	(fhandler_dev_raw::read_file): Remove.
	(fhandler_dev_raw::raw_read): Remove.
	(fhandler_dev_raw::raw_write): Remove.
	(fhandler_dev_raw::dup): Drop copying removed members.
	(fhandler_dev_raw::ioctl): Drop blocksize testing.
	* wincap.h: Implement has_disk_ex_ioctls throughout.
	* wincap.cc: Ditto.
	(wincap_vista): Preliminary wincaps for Windows Vista/Longhorn.
	(wincapc::init): Add Vista/Longhorn handling.
This commit is contained in:
Corinna Vinschen
2005-09-28 19:33:18 +00:00
parent dcb091caaf
commit f098767559
6 changed files with 428 additions and 346 deletions

View File

@@ -59,7 +59,8 @@ static NO_COPY wincaps wincap_unknown = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_95 = {
@@ -110,7 +111,8 @@ static NO_COPY wincaps wincap_95 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_95osr2 = {
@@ -161,7 +163,8 @@ static NO_COPY wincaps wincap_95osr2 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_98 = {
@@ -212,7 +215,8 @@ static NO_COPY wincaps wincap_98 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_98se = {
@@ -263,7 +267,8 @@ static NO_COPY wincaps wincap_98se = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_me = {
@@ -314,7 +319,8 @@ static NO_COPY wincaps wincap_me = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:true,
has_null_console_handler_routine:false
has_null_console_handler_routine:false,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_nt3 = {
@@ -365,7 +371,8 @@ static NO_COPY wincaps wincap_nt3 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_nt4 = {
@@ -416,7 +423,8 @@ static NO_COPY wincaps wincap_nt4 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_nt4sp4 = {
@@ -467,7 +475,8 @@ static NO_COPY wincaps wincap_nt4sp4 = {
has_extended_priority_class:false,
has_guid_volumes:false,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_2000 = {
@@ -518,7 +527,8 @@ static NO_COPY wincaps wincap_2000 = {
has_extended_priority_class:true,
has_guid_volumes:true,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:false
};
static NO_COPY wincaps wincap_xp = {
@@ -569,7 +579,8 @@ static NO_COPY wincaps wincap_xp = {
has_extended_priority_class:true,
has_guid_volumes:true,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:true
};
static NO_COPY wincaps wincap_2003 = {
@@ -620,7 +631,60 @@ static NO_COPY wincaps wincap_2003 = {
has_extended_priority_class:true,
has_guid_volumes:true,
detect_win16_exe:false,
has_null_console_handler_routine:true
has_null_console_handler_routine:true,
has_disk_ex_ioctls:true
};
static NO_COPY wincaps wincap_vista = {
lock_file_highword:UINT32_MAX,
chunksize:0,
shared:FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
is_winnt:true,
is_server:true,
access_denied_on_delete:false,
has_delete_on_close:true,
has_page_guard:true,
has_security:true,
has_security_descriptor_control:true,
has_get_process_times:true,
has_lseek_bug:false,
has_lock_file_ex:true,
has_signal_object_and_wait:true,
has_eventlog:true,
has_ip_helper_lib:true,
has_set_handle_information:true,
has_set_handle_information_on_console_handles:true,
supports_smp:true,
map_view_of_file_ex_sucks:false,
altgr_is_ctrl_alt:true,
has_physical_mem_access:true,
has_working_copy_on_write:true,
share_mmaps_only_by_name:false,
virtual_protect_works_on_shared_pages:true,
has_hard_links:true,
can_open_directories:true,
has_move_file_ex:true,
has_negative_pids:false,
has_unreliable_pipes:false,
has_named_pipes:true,
has_try_enter_critical_section:true,
has_raw_devices:true,
has_valid_processorlevel:true,
has_64bit_file_access:true,
has_process_io_counters:true,
supports_reading_modem_output_lines:true,
needs_memory_protection:true,
pty_needs_alloc_console:true,
has_terminal_services:true,
has_switch_to_thread:true,
cant_debug_dll_entry:false,
has_ioctl_storage_get_media_types_ex:true,
start_proc_suspended:false,
has_extended_priority_class:true,
has_guid_volumes:true,
detect_win16_exe:false,
has_null_console_handler_routine:true,
has_disk_ex_ioctls:true
};
wincapc wincap;
@@ -676,6 +740,11 @@ wincapc::init ()
caps = &wincap_2003;
}
break;
case 6:
os = "NT";
has_osversioninfoex = true;
caps = &wincap_vista;
break;
default:
os = "??";
caps = &wincap_unknown;