* 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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user