Операционная система Microsoft Windows 3.1 для программиста -том 3

Чтение и запись


Для выполнения операций чтения и записи в программном интерфейсе операционной системы Windows версии 3.1 предусмотрены четыре функции: _lread, _hread, _lwrite, _hwrite.

Функция _lread предназначена для чтения из открытого файла:

UINT WINAPI _lread( HFILE hf, // идентификатор файла void _huge* hpvBuffer, // адрес буфера UINT cbBuffer); // размер буфера

Функция возвращает количество байт данных, прочитанных из файла. Возвращенное значение может быть меньше затребованного в параметре cbBuffer, если в процессе чтения был достигнут конец файла. При ошибке функция возвращает значение HFILE_ERROR.

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

Прочитанные данные будут записаны в буфер hpvBuffer, имеющий размер cbBuffer байт. Этот буфер можно получить динамически, вызывав, например, функцию GlobalAlloc или LocalAlloc. Размер буфера не должен превышать 65534 байт.

В программном интерфейсе операционной системы Windows версии 3.1 появилась функция _hread , с помощью которой можно выполнять чтение из файла блоков практически любого размера:

long WINAPI _hread( HFILE hf, // идентификатор файла void _huge* hpvBuffer, // адрес буфера long cbBuffer); // размер буфера

Так же как и функция _lread, функция _hread возвращает количество байт данных, прочитанных из файла. Возвращенное значение может быть меньше затребованного в параметре cbBuffer, если в процессе чтения был достигнут конец файла. При ошибке функция возвращает значение HFILE_ERROR.

Вы можете с помощью функции GlobalAlloc заказать для функции _hread буфер размером, большим 64 Кбайт.

С помощью функции _lwrite вы можете выполнить запись данных в файл:

UINT WINAPI _lwrite( HFILE hf, // идентификатор файла void _huge* hpvBuffer, // адрес буфера UINT cbBuffer); // размер буфера

Назначение параметров этой функции аналогично назначению параметров функции _lread. Перед вызовом функции _lwrite буфер должен содержать записываемые в файл данные.

Функция возвращает количество байт данных, записанных в файл, или значение HFILE_ERROR при ошибке.

Если вам надо писать в файл блоки, имеющие размер больше 64 Кбайт, воспользуйтесь функцией _hwrite , которая впервые появилась в программном интерфейсе Windows версии 3.1:

long WINAPI _hwrite( HFILE hf, // идентификатор файла void _huge* hpvBuffer, // адрес буфера long cbBuffer); // размер буфера

Назначение параметров функции аналогично назначению параметров функции _lwrite. Функция возвращает количество байт данных, записанных в файл, или значение HFILE_ERROR при ошибке.



Содержание раздела