Прочитать на английском

Поделиться через


Функция mmioAdvance (mmiscapi.h)

Функция mmioAdvance перемещает буфер ввода-вывода файла, настроенный для прямого доступа к буферу ввода-вывода с помощью функции mmioGetInfo .

Синтаксис

MMRESULT mmioAdvance(
  HMMIO      hmmio,
  LPMMIOINFO pmmioinfo,
  UINT       fuAdvance
);

Параметры

hmmio

Дескриптор файла, открытый с помощью функции mmioOpen .

pmmioinfo

Указатель на структуру MMIOINFO , полученную с помощью функции mmioGetInfo . Эта структура используется для задания сведений о текущем файле, а затем обновляется после расширения буфера. Этот параметр является необязательным.

fuAdvance

Флаги для операции. Это может быть один из следующих вариантов.

Значение Значение
MMIO_READ Буфер заполняется из файла.
MMIO_WRITE Буфер записывается в файл.

Возвращаемое значение

Возвращает MMSYSERR_NOERROR в случае успешного выполнения или ошибку в противном случае. Возможные значения ошибок:

Код возврата Описание
MMIOERR_CANNOTEXPAND
Невозможно развернуть указанный файл памяти, вероятно, потому, что член adwInfo структуры MMIOINFO был установлен в нулевое значение в начальном вызове функции mmioOpen .
MMIOERR_CANNOTREAD
Произошла ошибка при заполнении буфера.
MMIOERR_CANNOTWRITE
Содержимое буфера не удалось записать на диск.
MMIOERR_OUTOFMEMORY
Недостаточно памяти для расширения файла памяти для дальнейшей записи.
MMIOERR_UNBUFFERED
Указанный файл не открыт для буферизованного ввода-вывода.

Комментарии

Если файл открыт для чтения, буфер ввода-вывода заполняется с диска. Если файл открыт для записи и флаг MMIO_DIRTY установлен в элементе dwFlags структуры MMIOINFO , буфер записывается на диск. Элементы pchNext,pchEndRead и pchEndWrite структуры MMIOINFO обновляются с учетом нового состояния буфера ввода-вывода.

Если указанный файл открыт для записи или для чтения и записи, буфер ввода-вывода сбрасывается на диск перед чтением следующего буфера. Если буфер ввода-вывода не может быть записан на диск, так как диск заполнен, mmioAdvance возвращает MMIOERR_CANNOTWRITE.

Если указанный файл открыт только для записи, необходимо указать флаг MMIO_WRITE.

Если вы выполнили запись в буфер ввода-вывода, необходимо установить флаг MMIO_DIRTY в элементе dwFlags структуры MMIOINFO перед вызовом mmioAdvance. В противном случае буфер не будет записан на диск.

Если конец файла достигнут, mmioAdvance по-прежнему успешно возвращается, несмотря на то, что больше данные не могут быть прочитаны. Чтобы проверка для конца файла, проверка, равны ли члены pchNext и pchEndRead структуры MMIOINFO после вызова mmioAdvance.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header mmiscapi.h (включая Mmiscapi.h, Windows.h)
Библиотека Winmm.lib
DLL Winmm.dll