Уроки Iczelion'а




Урок 12. Память и файлы - часть 7


  • FILE_ATTRIBUTE_COMPRESSED Файл или директория сжаты. Для файла это означает, что вся информация в файле заархивирована. Для директории это означает, что сжатие подразумевается по умолчанию для создаваемых вновь файлов и поддиректорий.
  • FILE_ATTRIBUTE_NORMAL У файла нет других атрибутов. Этот атрибут действителен, только если исопльзуется один.
  • FILE_ATTRIBUTE_HIDDEN Файл спрятан. Он не включается в обычные листинги директорий.
  • FILE_ATTRIBUTE_READONLY Файл только для чтения. Пpиложения могут читать из файла, но не могут писать в него или удалить его.
  • FILE_ATTRIBUTE_SYSTEM Файл - часть операционной системы или используется только ей.

    invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE mov hMemory,eax

    invoke GlobalLock,hMemory mov pMemory,eax

    Когда файл открыт, мы резервирует блок память для использования функциями ReadFile и WriteFile. Мы указываем флаг GMEM_MOVEABLE, чтобы позволить Windows перемещать блок памяти, чтобы уплотнять последнюю.

    Когда GlobalAlloc возвращает положительный результат, eax содержит хэндл зарезервированного блока памяти. Мы передаем этот хэндл функции GlobalLock, который возвращает указатель на блок памяти.

    invoke ReadFile,hFile,pMemory,MEMSIZE-1,ADDR SizeReadWrite,NULL invoke SendMessage,hwndEdit,WM_SETTEXT,NULL,pMemory

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

    После заполнения блока памяти данными, мы помещаем данные в edit control, посылая сообщение WM_SETTEXT контролу, причем lParam содержит указатель на блок памяти. После этого вызова edit control отображает данные в его клиентской области.




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