Создание, открытие, закрытие и удаление файла. Атрибуты файла.
Установить дату последней модификации файла
Вход: АХ = 5705h; ВХ = дескриптор файла; СХ = 0000h;
DX – биты установлены следующим образом: 0..4 – день месяца в диапазоне 1..31; 5..8 = месяц в диапазоне 1..12; 9..15 – число лет, начиная с 1980 года.
Выход: CF = 0 – успешное выполнение функции; CF = 1: АХ код ошибки.
Аналогично функции 5704h данная функция позволяет установить только дату создания файла.
Установить дату и время создания или последней модификации файла
Вход: АХ = 5707h; ВХ = дескриптор файла;
СХ – биты установлены следующим образом: 0..4 – секунды, деленные на 2; 5..10 = минуты 0..59; 11..15 – часы;
DX – биты установлены следующим образом: 0..4 = день месяца в диапазоне 1..31; 5..8 = месяц в диапазоне 1..12; 9..15 = число лет начиная с 1980 года;
SI – двоичное значение количества 10-миллисекундных интервалов, добавляемых к времени MS DOS в диапазоне 0..199.
Выход: CF = 0 – успешное выполнение функции; CF = 1: АХ – код ошибки.
Данная функция реализована в полном объеме.
Кроме дополнительных функций для работы с различными временными характеристиками файла Windows-версия MS DOS содержит две функции для преобразования форматов времени. Дело в том, что Windows работает со временем в 64 разрядном формате. При этом точкой отсчета является 00 часов 00 минут 1 января 1601 года. Значение времени содержит число 100-наносекундных интервалов, прошедших с этой даты. По расчетам разработчиков этого значения должно хватить на 400 лет. Для того чтобы манипулировать этим 64-разрядным "средневековьем" с целью представления его в виде, воспринимаемом человеком (DOS-время), введена функция 71a7h.
Вход: АХ = 71a7h; BL = 0 – преобразовать 64-разрядное время в DOS-время;
DS:SI = указатель на экземпляр структуры FILETIME, содержащей 64-битное значение времени.
Выход: CF = 0 – успешное выполнение функции, при этом регистры устанавливаются следующим образом: ВН = число 10-миллисекундных интервалов, добавляемых к времени MS DOS (значение в диапазоне 0..199);
СХ – время в упакованном формате со значением бит: 0..4 – секунды, деленные на 2; 5..10 – минуты в диапазоне 0..59; 0..4 – часы в диапазоне 0..23;
DX = дата в упакованном формате со значением бит: 0..4 – день месяца в диапазоне 1.31; 5..8 – месяц в диапазоне 1..12; 9..15 – число лет начиная с 1980 года (для получения истинного значения прибавьте 1980);
CF = 1: АХ – код ошибки.
Структура filetime описывается в программе следующим образом:
FILETIME struc DwLowOateTime dd?:младшие 32 бита значения времени DwHighDateTime dd?:старшие 32 бита значения времени FILETIME ends
Вход: АХ = 71a7h; BL – 1 – преобразовать DOS-время в 64-разрядное время;
ВН = число 10-миллисекундных интервалов, добавляемых ко времени MS DOS (значение в диапазоне 0..199);
СХ = время в упакованном формате со значением бит: 0..4 – секунды, деленные на 2; 5..10 – минуты в диапазоне 0..59; 0..4 – часы в диапазоне 0..23;
DX – дата в упакованном формате со значением бит: 0..4 – день месяца в диапазоне 1..31; 5..8 – месяц в диапазоне 1..12; 9..15 – число лет начиная с 1980 года (для получения истинного значения прибавьте 1980)
DS:SI = указатель на экземпляр структуры FILETIME, в которой вернется 64-битное значение времени.
Выход: CF=O – успешное выполнение функции, при этом в области памяти, адресуемой DS:SI, возвращается 64-битное значение времени;
CF=1: AX – код ошибки.