Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ ОС ЭКЗАМЕН.docx.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
185.86 Кб
Скачать

8.Использование файлов при создании программы.

Функции для работы с файлами: создание, открытие и закрытие файлов и каталогов:

CreateFile, CreateDirectory, CloseHandle, CopyFile, DeleteFile, HANDLE FindFirstFile, BOOL FindNextFile, BOOL ReadFile, BOOL WriteFile, DWORD SetFilePointer, BOOL SetEndOfFile, DWORD GetFileSize, BOOL SetFileAttributes.

Создание ( открытие ) файлов:

HANDLE CreateFile (

LPCTSTR lpFileName, //Имя файла

DWORD dwDesiredAccess, //режими доступу (GENERIC_WRITE, GENERIC_READ)

DWORD dwShareMode, // Режими сувмістного доступу (FILE_SHARE_READ, // FILE_SHARE_ WRITE)

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // Атрибути безпеки (зазвичай 0)

DWORD dwCreationDistribution, // Режими створення файлу (CREATE_ALWAYS, //CREATE_NEW, OPEN_ALWAYS, OPEN_EXISTING)

DWORD dwFlagsAndAttributes, // Флаги та атрибути (зазвичай 0)

HANDLE hTemplateFile // (зазвичай 0)

);

GENERIC_READ – режим доступа CreateFile

GENERIC_WRITE – режим доступа CreateFile

FILE_SHARE_READ – режим совместного доступа CreateFile

FILE_SHARE_WRITE – режим совместного доступа CreateFile

CREATE_ALWAYS – Создает новый объект (файл). Функция перезаписывает существующий объект (файл).

CREATE_NEW – создать новый файл и выдаёт ошибку если файл существует.

OPEN_EXISTING – Открывает объект (файл) Выдает ошибку если указанный объект (файл) не существует

OPEN_ALWAYS – Открывает объект (файл), если он существует. Если объект (файл) не существует, функция создает его

INVALID_HANDLE_VALUE – функция CreateFile возвращает INVALID_HANDLE_VALUE, если ошибка, в случае успешного завершения возвращает другое значение.

9. Позиционирование при работе с файлами. Функция.

Установка указателя для файла, то есть места, с которого начнется ввод - вывод данных следующей функцией:

DWORD SetFilePointer(

HANDLE hFile, // дескриптор на открытый файл

LONG lDistanceToMove, // количество байт, на которые надо передвинуться

PLONG lpDistanceToMoveHigh, // Второй байт, указывающий количество байт

DWORD dwMoveMethod //Откуда нужно начинать двигаться

);

FILE_BEGIN Точка отсчета равняется нулю или это начало файла.

FILE_CURRENT Точка отсчета - текущее значение указателя позиции в файле.

FILE_END Точка отсчета - текущая позиция метки конца файла.

Если че моно дополнить http://www.vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_setfilepointer.htm

10. Отображение файла на памяти. Назвать назначения параметров в функции.

Для отображения файла в память используется функция CreateFileMapping, а для получения указателя на отображенную область - функция MapViewOfFile. Успешное выполнение обеих операций позволяет прикладной программе работать с этой областью как с любым другим фрагментом выделенной памяти, в частности, изменять ее содержимое.

HANDLE CreateFileMapping(

HANDLE hFile, // дескриптор файла

LPSECURITY_ATTRIBUTES lpAttributes, // защита

DWORD flProtect, // атрибуты защиты

DWORD dwMaximumSizeHigh, // старшее слово размера

DWORD dwMaximumSizeLow, // младшее слово размера

LPCTSTR lpName // имя объекта

);

PAGE_READONLY Дает доступ к страницам переданной области только для чтения. Попытка записать в переданную область, приводит к нарушению прав доступа. Файл, определяемый параметром hFile должен быть создан с правом доступа GENERIC_READ.

PAGE_READWRITE Дает доступ к операциям чтения-записи страниц переданной области. Файл, определяемый hFile должен быть создан с правами доступа GENERIC_READ и GENERIC_WRITE.

PAGE_WRITECOPY Дает доступ к копированию при записи страниц переданной области. Файлы, определяемые параметром hFile должны создаваться с правами доступа GENERIC_READ и GENERIC_WRITE.

Функция MapViewOfFile отображает представление проецируемого файла в адресное пространство вызывающего процесса.

LPVOID MapViewOfFile(

HANDLE hFileMappingObject, // дескр. объекта проецируемый файл

DWORD dwDesiredAccess, // режим доступа

DWORD dwFileOffsetHigh, // старшее DWORD смещения

DWORD dwFileOffsetLow, // младшее DWORD смещения

SIZE_T dwNumberOfBytesToMap // число отображаемых байтов

);

FILE_MAP_WRITE Доступ к операциям чтения-записи. Отображаемый объект должен быть создан с защитой PAGE_READWRITE . Чтение/запись представления файла отображается.

FILE_MAP_READ Доступ только для чтения. Отображаемый объект должен быть создан с защитой PAGE_READWRITE или PAGE_READONLY. Представление файла только для чтения отображается.