
- •1.1 Основы программирования в операционной системе Windows
- •1.1.1 Вызов функций api
- •1.1.2 Структура программы
- •1.2 Вопросы системного программирования в Windows
- •1.2.1 Страничная и сегментная адресация.
- •1.2.2 Адресное пространство процесса.
- •2.1 Управление процессами
- •2.2 Процессы и потоки в Windows
- •2.3 Создание процессов
- •2.4 Определение исполняемого образа и командной строки
- •2.5 Идентификация процессов
- •3.1 Создание потока. Функция CreateThread
- •3.2. Завершение потока
- •3.3 Другие функции работы с потоками
- •3.4 Структура context
- •3.5 Приоритеты потоков
- •4.1 Объект critical_section
- •4.2 Мьютексы
- •4.3 Семафоры
- •5.1 События
- •7.1 Кучи
- •7.2 Управление памятью кучи
- •Другие функции для работы с кучей
- •Резюме по управлению кучей
- •Отображение адресного пространства процесса в объекты отображения
- •Что такое импорт
- •Явная загрузка dll
- •Явное подключение экспортируемого идентификатора
- •10.1 Управление файлами и каталогами Создание и открытие файлов
- •10.2 Управление каталогами
- •10.3 Другие методы получения атрибутов файлов и каталогов
- •11.1 Блокировка файлов
- •11.2 Реестр
- •12.1 Стандартные устройства и консольный ввод-вывод
- •12.2 Асинхронный ввод-вывод и порты завершения
- •Параметры
- •Цели системы безопасности
- •Параметры
- •Аварийное завершение
- •Использование именованных каналов
- •Параметры
- •Наблюдение за сообщениями в именованном канале
- •Параметры
10.3 Другие методы получения атрибутов файлов и каталогов
Функции FindFirstFile и FindNextFile позволяют получать следующую информацию об атрибутах файла: флаги атрибутов, три штампа времени и размер файла. Для работы с атрибутами есть несколько других функций, включая ту, что позволяет их устанавливать, и они могут работать непосредственно с дескриптором открытого файла без просмотра каталога или указания имени файла. Три таких функции, GetFileSize, GetFileSizeEx и SetEndOfFile, были описаны выше.
Другие функции служат для получения остальных атрибутов. Например, для получения штампов времени открытого файла предназначена следующая функция:
BOOL GetFileTime ( HANDLE hFile, LPFILETIME lpftCreation,
LPFILETIME lpftLastAccess, LPFILETTMF lpftLastWrite)
Значения времени здесь и в структуре WIN32_FIND_DATA — 64-разрядные целые числа без знака, указывающие 100-наносекундных единиц (107 единиц в секунду), прошедших с исходного времени (1 января 1601 г.), в форме всеобщего скоординированного времени (Universal Coordinated Time — UTC). Существует несколько удобных функций для работы со временем.
FileTimeToSystemTime выражает время файла в более привычных единицах — от лет до секунд и миллисекунд. Эта форма более пригодна, например, для отображения или вывода времени.
SystemTimeToFileTime производит обратное преобразование: времени, выраженного в этих единицах, во время файла.
CompareFileTime определяет, новее ли один файл, чем другой (-1), старше ли (+1) или их возрасты равны (0).
SetFileTime изменяет штампы времени; временные параметры, которые не надо изменять, указываются в вызове функции как 0. NTFS поддерживает все три временных параметрах, но FAT дает точный результат только для времени последнего доступа.
FileTimeToLocalFileTime и LocalFileTimeToFileTime преобразуют UTC в местное время и обратно.
Функция GetFileType позволяет различать дисковые файлы, символьные файлы (фактически это устройства наподобие принтеров и консолей) и каналы. Здесь файл также указывается своим дескриптором.
Функция GetFileAttributes по указанному имени файла и каталога возвращает только атрибуты.
DWORD GetFileAttributes (LPCTSTR lpszFileName)
Возвращаемое значение: атрибуты файла или 0xFFFFFFFF в случае неудачи.
Атрибуты можно проверить на соответствие комбинациям определенных значений. Некоторые атрибуты, такие как флаг временного файла, устанавливаются при вызове CreateFile. Значения атрибутов могут быть следующими:
FILE_ATTRIBUTE_DIRECTORY FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_TEMPORARY
Функция SetFileAttributes изменяет эти атрибуты в указанном по имени файле.
Имена временных файлов
Следующая функция создает имена для временных файлов. Имя может относиться к любому указанному каталогу и должно быть уникальным.
GetTempFileName выдает уникальное имя файла с расширением .tmp в указанном каталоге и может создавать такой файл.
UINT GetTempFileName ( LPCTSTB lpszPath, LPCTSTR lpszPrefix,
UINT uUnique, LPCTSTR lpszTempFile)
Возвращаемое значение: уникальное числовое значение, на основе которого создается имя файла. Если uUnique отлично от нуля, возвращается uUnique. При неудаче возвращаемое значение — нуль.
Параметры
lpszPath — каталог для временного файла. Символ "." обычно обозначает текущий каталог. Можно также указать каталог, предназначенный для временных файлов. Его имя выдает функция Win32 GetTempPath.
lpszPrefix — префикс имени временного файла. Допускаются только символы ANSI. Значение uUnique обычно равно нулю; в этом случае функция генерирует уникальное четырехразрядное число и создает файл. Если это значение отлично от нуля, файл не создается; это надо сделать с помощью CreateFile, возможно, указав FILE_FLAG_DELETE_ON_CLOSE.
lpszTempFile указывает на буфер, который содержит имя временного файла. Длина буфера в байтах должна быть не меньше МАХ_РАТН. Полученное в результате полное имя — конкатенация пути, префикса, четырехразрядного шестнадцатеричного числа и расширения .tmp
Лекция 11. Тема: Дополнительные методы работы с файлами и каталогами. Реестр