Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2017-06-11 | 350 |
5.00
из
|
Заказать работу |
|
|
#include <windows.h>
#include <stdio.h>
void main(void) {
DWORD dwFileAttributes;
dwFileAttributes = GetFileAttributes("tmp");
if(dwFileAttributes == -1) printf(" GetFileAttributes Error\n");
if (dwFileAttributes & FILE_ATTRIBUTE_NORMAL)
printf("This file is normal\n");
if (dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
printf("This file is directory\n");
if (dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
printf("This file is reparse point\n");
}
С помощью данной программы можно установить характер файла tmp (каталог, обычный файл или точка повторного разбора).
Рекомендуется самостоятельно написать программу, где применяется функция SetFileAttributes, например, устанавливается флаг "FILE_ATTRIBUTE_READONLY" для атрибутов указанного файла.
Организация файлов и доступ к ним. Понятие об асинхронном вводе-выводе
Для хранения файлов обычно используются устройства прямого доступа (диски), которые позволяют обращаться напрямую к любому блоку диска. Это обеспечивает произвольный доступ к байтам файла, поскольку номер блока однозначно определяется текущей позицией внутри файла. Таким образом, файловая подсистема ОС Windows имеет дело с файлами, байты которых могут быть считаны в любом порядке. Такие файлы называется файлами прямого доступа. Непосредственное обращение к любому байту внутри файла предполагает наличие операции позиционирования, целью которой является задание текущей позиции для считывания или записи. Поскольку файл может иметь большой размер, указатель текущей позиции - 64-разрядное число, для задания которого обычно используются два 32-разрядных.
Известно, что операции ввода-вывода являются относительно медленными. Чтобы избавить центральный процессор от ожидания выполнения операции ввода-вывода, в системе организована обработка асинхронных событий, в частности, прерываний, для оповещения процессора о завершении операции ввода-вывода. Однако если на уровне ОС операции ввода-вывода являются асинхронными, на уровне пользовательской программы они еще долго оставались синхронными и блокирующими. В результате процесс, инициировавший операцию ввода-вывода, переходил в состояние ожидания. Примером синхронного ввода-вывода служит приведенный выше программный фрагмент, где операторы, следующие за вызовами функций ReadFile и WriteFile, не могут выполняться до тех пор, пока операция ввода-вывода не завершена.
|
Важным достижением разработчиков ОС Windows является предоставление пользователю возможности осуществлять асинхронные операции ввода-вывода наряду с традиционными синхронными. При этом процесс, инициирующий операцию ввода-вывода, не ждет ее окончания, а продолжает вычисления. В распоряжении пользователя имеются средства проконтролировать завершение операции ввода-вывода впоследствии. Асинхронный ввод-вывод позволяет создавать более эффективные приложения за счет планомерного использования ресурсов и в первую очередь - центрального процессора.
Пример применения операции асинхронного чтения из файла
Для того чтобы воспользоваться возможностями асинхронного ввода-вывода, нужно вызвать функцию CreateFile с установленным флагом FILE_FLAG_OVERLAPPED, входящим в состав параметра dwFlagsAndAttrs, и указать: с какой позиции осуществлять чтение (запись), сколько байтов считать (записать) и какое событие должно сигнализировать о том, что операция завершена. Для этого необходимо проинициализировать поля структуры OVERLAPPED в параметре pOverlapped функций ReadFile или WriteFile.
Структура OVERLAPPED
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED;
Параметр Internal используется для хранения кода возможной ошибки, а параметр InternalHigh - для хранения числа переданных байт. Вначале разработчики Windows не планировали делать их общедоступными - отсюда и такие не содержащие мнемоники имена. Offset и OffsetHigh - соответственно младшие и старшие разряды текущей позиции файла. hEvent специфицирует событие, сигнализирующее окончание операции ввода-вывода.
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!