Сборник по задачам и примерам Assembler



         

Получение и изменение атрибутов файла - часть 3


Функция DosDateTimeToFileTime, наоборот, преобразует время в формате DOS представленное в виде двух слов wFatDate, wFatTime (для времени и даты соответственно), в 64-битное значение 1 pFi I eTime.

Установить время создания, последнего доступа или модификации файлов можно с помощью функции SetFileTime.

BOOL SetFileTime( HANDLE hFile. const FILETIME *lpCreationTime.

const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime ):

В качестве входных параметров функция SetFil eTime принимает указатели на три экземпляра структуры FILETIME и дескриптор файла. Экземпляры структур уже заполнены необходимыми значениями времени. Если какое-либо из значений устанавливать не нужно, то вместо указателя на соответствующую структуру передается NULL. В случае успешного завершения функция возвращает ненулевое значение в регистре ЕАХ.

Из вышеизложенного видно, что для получения различных характеристик файла используются множество различных функций. Работа с ними может утомить кого угодно. Нельзя ли чего-нибудь попроще? Можно. Win32 предоставляет функцию GetFi I elnformationByHandl e:

BOOL GetFileInformationByHandle( HANDLE hFile.

LPBY_HANDLE_FILE_INFORMATION lpFilelnformation );

На вход данной функции передается дескриптор файла, о котором необходимо получить Информацию, и указатель на экземпляр структуры BYHANDLEFI LE_ INFORMATION, который заполняется этой функцией. Как видно из названия полей (см. код ниже), в этой структуре сосредоточена вся информация о файле. Ниже приведен пример кода, использующего данную структуру.

;prg07_32.asm - Win32-nporpaMMa консольного приложения для

Win32 для исследования работы

функции GetFilelnformationByHandle API Win32.

;описание структур

FILETIME struc

DwLowDateTime dd ? ;младшие 32 бита значения времени

DwHighDateTime dd ? :старшие 32 бита значения времени

FILETIME ends

BY_HANDLE_FILE_INFORMATION struc

DwFileAttributes dd 0 атрибуты файла

struc

FtCreationTime_DwLowDateTime dd ? ;младшие 32 бита

значения времени создания файла FtCreationTime_




Содержание  Назад  Вперед