Лабораторная работа №43 / LR_4
.DOCЛабораторная работа 4. Операции над характеристиками файлов
Цель работы. Разработать приложение для работы с характеристиками файлов
-
Возможности программы:
- открытие произвольного файла по его
-
анализ и изменение атрибутов файлов
-
анализ и взаимные преобразования временных характеристик файлов в различных форматах
-
Используемые функции Win32 API:
Таблица вариантов
|
Вар.01 |
Вар.02 |
Вар.03 |
Вар.04 |
Вар.05 |
Вар.06 |
Вар.07 |
Вар.08 |
Вар.09 |
Вар.10 |
CreateFile |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
GetFileInformationByHandle |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
GetFileType |
+ |
|
|
|
|
|
|
|
|
|
GetFileSize |
|
+ |
|
|
|
|
+ |
|
+ |
|
GetFileAttributes |
+ |
|
+ |
|
|
|
|
|
+ |
+ |
SetFileAttributes |
|
+ |
|
+ |
|
+ |
|
+ |
|
|
GetSystemTime |
+ |
|
+ |
|
+ |
+ |
|
|
+ |
+ |
GetFileTime |
|
+ |
|
+ |
+ |
+ |
+ |
|
+ |
+ |
SetFileTime |
+ |
|
+ |
|
+ |
|
+ |
|
|
|
SystemTimeToFileTime |
|
|
|
|
|
+ |
|
+ |
|
+ |
FileTimeToSystemTime |
+ |
+ |
+ |
|
+ |
|
+ |
|
+ |
|
CompareFileTime |
|
|
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
FileTimeToDosDateTime |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
+ |
+ |
DosDateTimeToFileTime |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
Вар.11 |
Вар.12 |
Вар.13 |
Вар.14 |
Вар.15 |
Вар.16 |
Вар.17 |
Вар.18 |
Вар.19 |
Вар.20 |
CreateFile |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
GetFileInformationByHandle |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
GetFileType |
|
|
+ |
+ |
|
+ |
+ |
|
+ |
+ |
GetFileSize |
+ |
|
+ |
|
|
|
|
|
|
|
GetFileAttributes |
+ |
|
+ |
|
+ |
+ |
|
|
+ |
|
SetFileAttributes |
|
+ |
|
|
|
+ |
+ |
+ |
+ |
|
GetSystemTime |
|
+ |
|
+ |
+ |
|
+ |
+ |
+ |
+ |
GetFileTime |
+ |
+ |
|
+ |
|
+ |
|
+ |
|
|
SetFileTime |
|
|
+ |
+ |
|
|
|
+ |
+ |
+ |
SystemTimeToFileTime |
|
|
|
|
+ |
|
+ |
|
|
|
FileTimeToSystemTime |
+ |
+ |
+ |
|
+ |
+ |
+ |
|
|
|
CompareFileTime |
|
|
|
|
|
|
|
|
+ |
+ |
FileTimeToDosDateTime |
+ |
+ |
|
+ |
|
+ |
+ |
+ |
|
+ |
DosDateTimeToFileTime |
|
|
|
+ |
|
+ |
|
+ |
|
+ |
Приложение 4. Функции и структуры для операций над характеристиками файлов
HANDLE CreateFile( // Создание файла [out]
LPCTSTR lpFileName, // file name – имя файла [in]
DWORD dwDesiredAccess, // access mode – права доступа [in]
DWORD dwShareMode, // share mode - режим разделения файла [in]
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD – атрибуты ьезопасности [in]
DWORD dwCreationDisposition, // how to create – коллизии с существующим файлом [in]
DWORD dwFlagsAndAttributes, // file attributes – флаги и атрибуты файла [in]
HANDLE hTemplateFile); // handle to template file – хэндл файла-образца [in]
BOOL GetFileInformationByHandle( // Получение информации о файле по хэндлу
HANDLE hFile, // handle to file - хэндл файла [in]
LPBY_HANDLE_FILE_INFORMATION lpFileInformation); // buffer – информация о файле [out]
DWORD GetFileType( // Определение типа файла [out]
HANDLE hFile); // handle to file – хэндл файла [in]
DWORD GetFileSize( // Определение размера файла [out]
HANDLE hFile, // handle to file – хэндл файла [in]
LPDWORD lpFileSizeHigh); // high-order word of file size – старшая часть слова размера файла [out]
BOOL GetFileSizeEx( // Определение размера файла
HANDLE hFile, // handle to file – хэндл файла [in]
PLARGE_INTEGER lpFileSize); // file size – размер файла [out]
DWORD GetFileAttributes( // Получение атрибутов файла [out]
LPCTSTR lpFileName); // name of file or directory – имя файла или каталога [in]
BOOL GetFileAttributesEx( // Получение атрибутов файла
LPCTSTR lpFileName, // file or directory name – имя файла или каталога [in]
GET_FILEEX_INFO_LEVELS fInfoLevelId, // attribute – объем информации [in]
LPVOID lpFileInformation ); // attribute information – информация об атрибутах [out]
BOOL SetFileAttributes( // Установка атрибутов файла
LPCTSTR lpFileName, // file name – имя файла [in]
DWORD dwFileAttributes); // attributes – атрибуты файла [in]
void GetSystemTime( // Получение отметок времени в формате SystemTime
LPSYSTEMTIME lpSystemTime ); // системное время [out]
BOOL GetFileTime( // Получение отметок времени в формате FileTime
HANDLE hFile, // хэндл файла [in]
LPFILETIME lpCreationTime, // время создания [out]
LPFILETIME lpLastAccessTime, // время последнего доступа [out]
LPFILETIME lpLastWriteTime ); // время последней записи [out]
BOOL SetFileTime( // Установка отметок времени в формате FileTime
HANDLE hFile, // хэндл файла [in]
const FILETIME *lpCreationTime, // время создания [in]
const FILETIME *lpLastAccessTime, // время последнего доступа [in]
const FILETIME *lpLastWriteTime ); // время последней записи [in]
BOOL SystemTimeToFileTime( // Преобразование форматов времени
const SYSTEMTIME *lpSystemTime, // Отметка времени в формате SystemTime [in]
LPFILETIME lpFileTime ); // Отметка времени в формате FileTime [out]
BOOL FileTimeToSystemTime( // Преобразование форматов времени
const FILETIME *lpFileTime, // Отметка времени в формате FileTime [in]
LPSYSTEMTIME lpSystemTime ); // Отметка времени в формате SystemTime [out]
BOOL FileTimeToDosDateTime( // Преобразование форматов времени
CONST FILETIME *lpFileTime, // file time - отметка времени в формате FileTime [in]
LPWORD lpFatDate, // MS-DOS date - отметка времени в формате FatDate [out]
LPWORD lpFatTime); // MS-DOS time - отметка времени в формате FatTime [out]
BOOL DosDateTimeToFileTime( // Преобразование форматов времени
WORD wFatDate, // 16-bit MS-DOS date - отметка времени в формате FatDate [in]
WORD wFatTime, // 16-bit MS-DOS time - отметка времени в формате FatTime [in]
LPFILETIME lpFileTime); // file time - отметка времени в формате FileTime [out]
LONG CompareFileTime( // Cравнение 2-х отметок времени в формате FileTime [out]
const FILETIME *lpFileTime1, // 1-я отметка времени [in]
const FILETIME *lpFileTime2 ); // 2-я отметка времени [in]
Структуры данных
typedef struct _BY_HANDLE_FILE_INFORMATION { // Получение информации о файле по его хэндлу
DWORD dwFileAttributes; // атрибуты файла
FILETIME ftCreationTime; // время создания
FILETIME ftLastAccessTime; // время последнего доступа
FILETIME ftLastWriteTime; // время последней записи (модификации)
DWORD dwVolumeSerialNumber; // серийный номер тома
DWORD nFileSizeHigh; // размер файла (ст.р.)
DWORD nFileSizeLow; // размер файла (мл.р.)
DWORD nNumberOfLinks; // число ссылок
DWORD nFileIndexHigh; // индекс файла (ст.р.)
DWORD nFileIndexLow; // индекс файла (мл.р.)
} BY_HANDLE_FILE_INFORMATION;
typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
typedef struct _FILETIME { // ft
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;