КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Создание проекции файла⇐ ПредыдущаяСтр 11 из 11 Вызвав 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 надо указать желательные атрибуты защиты. Атрибуты:
Последний параметр функции CreateFileMapping — pszName — строка с нулевым байтом в конце; в ней указывается имя объекта “проекция файла”, которое используется для доступа к данному объекту из другого процесса. Но обычно совместное использование проецируемого в память файла не требуется, и поэтому в данном параметре передают NULL. Система создает объект “проекция файла” и возвращает его описатель в вызвавший функцию поток. Если объект создать не удалось, возвращается нулевой описатель (NULL).
|