Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Создание проекции файла




Вызвав CreateFile, Вы указали операционной системе, где находится физическая память для проекции файла: на жестком диске, в сети, на CD-ROM или в другом месте. Теперь сообщите системе, какой объем физической памяти нужен проекции файла. Для этого вызовите функцию CreateFileMapping:

HANDLE CreateFileMapping(

HANDLE hFile,

PSECURITY_ATTRIBUTES psa,

DWORD fdwProtect,

DWORD dwMaximumSizeHigh,

DWORD dwMaximumSizeLow,

PCSTR pszName);

Первый параметр, hFile, идентифицирует описатель файла, проецируемого на адресное пространство процесса. Этот описатель получен после вызова CreateFile. Параметр psa — указатель на структуру SECURITY_ATTRIBUTES, которая относится к объекту ядра “проекция файла”; для установки защиты по умолчанию ему присваивается NULL.

Создание файла, проецируемого в память, S аналогично резервированию региона адресного пространства с последующей передачей ему физической памяти. Разница лишь в том, что физическая память для проецируемого файла — сам файл на диске, и для него не нужно выделять пространство в страничном файле. При создании объекта “проекция файла” система не резервирует регион адресного пространства и не увязывает его с физической памятью из файла (как это сделать, я расскажу в следующем разделе). Но, как только дело дойдет до отображения физической памяти на адресное пространство процесса, системе понадобится точно знать атрибут защиты, присваиваемый страницам физической памяти. Поэтому в fdwProtect надо указать желательные атрибуты защиты.

Атрибуты:

PAGE_READONLY Отобразив объект “проекция файла” на адресное пространство, можно считывать данные из файла. При этом Вы должны были передать в CreateFile флаг GENERIC_READ.
PAGE_READWRITE Отобразив объект “проекция файла” на адресное пространство, можно считывать данные из файла и записывать их. При этом Вы должны были передать в CreateFile комбинацию флагов GENERIC_READ | GENERIC_WRITE.
PAGE_WRITECOPY Отобразив объект “проекция файла” на адресное пространство, можно считывать данные из файла и записывать их. Запись приведет к созданию закрытой копии страницы. При этом Вы должны были передать в CreateFile либо GENERIC_READ, либо GENERIC_READ | GENERIC_WRITE

Последний параметр функции CreateFileMapping — pszName — строка с нулевым байтом в конце; в ней указывается имя объекта “проекция файла”, которое используется для доступа к данному объекту из другого процесса. Но обычно совместное использование проецируемого в память файла не требуется, и поэтому в данном параметре передают NULL.

Система создает объект “проекция файла” и возвращает его описатель в вызвавший функцию поток. Если объект создать не удалось, возвращается нулевой описатель (NULL).

 


Поделиться:

Дата добавления: 2015-04-21; просмотров: 125; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты