Уроки Iczelion'а


         

существует несколько ограничений при использовании


Правда, существует несколько ограничений при использовании FM. Как только вы создали такой файл, его размер не может изменяться до закрытия сессии. Поэтому FM прекрасно подходит для файлов из которых нужно только читать или файловых операций, которые не изменяют размер файла. Это не значит, что вы не можете использовать FM, если хотите увеличить pазмеp файла. Вы можете установить новый размер и создать MMF нового размера и файл увеличится до этого размер. Это просто неудобно, вот и все.
Достаточно объяснений. Давайте перейдем к реализации FM. Для того, чтобы его использовать, должны быть выполнены следующие шаги.

  • Вызов CreateFile для открытия файла.

  • Вызов CreateFileMaрing, которой передается хэндл файла, возвращенный CreateFile. Эта функция создает FM-объект из файла, созданного CreateFile'ом.

  • Вызов MaрViewOfFile, чтобы загрузить выбранный файловый регион или весь файл в память. Эта функция возращает указатель на первый байт промэппированного файлового региона.

  • Используйте указатель, чтобы писать или читать из файла.

  • Вызовите UnmaрViewOfFile, чтобы выгрузить файл.

  • Вызов CloseHandle, передав ему хэндл промэппированного файла в качестве одного из параметра, чтобы закрыть его.

  • Вызов CloseHandle снова, передав ему в этот раз хэндл файла, возвращенный CreateFile, чтобы закрыть сам файл.

Пpимеp:
Программа, листинг которой приведен ниже, позволит вам открыть файл с помощью окна открытия файла. Она откроет файл, используя FM, если это удастся, заголовок окна изменится на имя открытого файла. Вы можете сохранить файл под другим именем, выбрав пункт меню File/Save. Программа скопирует все содержимое открытого файла в новый файл. Учтите, что вы не должны вызывать GlobalAlloc для резервирования блока памяти в этой программе.
.386 .model flat,stdcall
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\comdlg32.inc
includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\comdlg32.lib

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий