Операционные системы. Программирование в операционной среде Windows

87 файла». Возможные значения этого параметра: PAGE READONLY - разрешается считывать данные из файла, созданного с видом доступа GENERICREAD; PAGEREADWRITE - разрешается считывать и записывать данные из файла, созданного с видом доступа GENERIC_READ|GENERIC_WRITE; PAGE WRITECOPY - . разрешается считывать и записывать данные из файла, созданного с видом доступа GENERIC READ, либо GENERIC READ | GENERIC WRITE, но при записи создается копия страницы. Параметры dwMaximumSizeHigh и dwMaximumSizeLow определяют максимальный размер файла в байтах. При создании ОЯ «проекция файла», отражающего текущий размер файла или при обработке файла без изменения его размера, оба параметра передаются равными 0. Для добавления данных в файл необходимо выбирать его размер максимальным. Для файла, имеющего нулевую длину, нельзя передавать нулевое значение, потому что это будет означать, что требуется проекция файла с нулевым объемом памяти. Нужно указать некоторое значение, например 200, тогда размер файла уже не будет нулевым. Параметр pszName — указатель на строку с именем ОЯ «проекция файла», которое используется для доступа к данному объекту из другого процесса. Когда совместное использование проецируемого в память файла не требуется, в данном параметре передают NULL. Система создает ОЯ «проекция файла» и возвращает его описатель. Если объект создать не удалось, возвращается нулевой описатель - NULL. Функция CreateFile при ошибке возвращает идентификатор INVALID_nANDLE_VALUE. Вог многих приложениях создаются данные, которые нужно разделять с другими процессами. Создавать для этого файл на диске и хранить там данные не всегда эффективно. Есть возможность проецирования файлов не из дискового файла. Для этого, вызывается функция CreateFileMapping и передается INVALID_nANDLE_VALUE в параметре hFile (без вызова функции CreateFile). Тогда ОС создает ОЯ «проекция файла», выделив физическую память из страничного файла. Объем выделяемой памяти определяется параметрами dwMaximumSizeHigh и dwMaximumSizeLow. Если необходимо, чтобы данные стали доступны другим процессам, следует при вызове функции CreateFileMapping в параметре pszName передать строку с именем ОЯ. Тогда другие процессы, если им необходим доступ к данным, смогут вызвать CreateFileMapping или OpenFileMapping и передать ей то же имя. Когда необходимость в доступе к ОЯ «проекция файла» отпадет, процесс должен вызвать CloseHandle. Как только все описатели объекта будут закрыты, система освободит память, переданную из страничного файла.

RkJQdWJsaXNoZXIy MTY0OTYy