Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

MmioAdvance

MMRESULT mmioAdvance( HMMIO hmmio, LPMMIOINFO lpmmioinfo, UINT wFlags );

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

В случае успешного завершения возвращает значение MMSYSERR_NOERROR. В противном случае возвращаемое значение может принимать одно из следующих значений:

  • MMIOERR_CANNOTEXPAND — указанная область памяти не может быть расширена, скорее всего, потому, что переменная adwInfo объекта структуры MMIOINFO имела нулевое значение при вызове функции mmioOpen.

  • MMIOERR_CANNOTREAD — ошибка при чтении информации в буфер.

  • MMIOERR_CANNOTWRITE — содержимое буфера не может быть записано на диск.

  • MMIOERR_OUTOFMEMORY — отсутствует память для расширения образа файла в оперативной памяти.

  • MMIOERR_UNBUFFERED — указанный файл открыт в режиме не буферированного ввода/вывода.

Аргументы

  1. hmmio — дескриптор файла, открытого функцией mmioOpen.

  2. lpmmioinfo — указатель на объект структуры MMIOINFO полученный с использованием функции mmioGetInfo. Этот объект структуры используется для хранения текущей информации о файле. Данный аргумент не является обязательным.

  3. wFlags — флаги операции. Определены следующие значение:

  • MMIO_READ — производится чтение содержимого буфера из файла.

  • MMIO_WRITE — производится запись содержимого буфера в файл.

Примечание

Функция mmioAdvance обновляет содержимое буфера ввода/вывода, к которому приложение имеет прямой доступ, и подготавливает его для дальнейшего использования.

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

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

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

При записи информации в буфер следует установить флаг MMIO_DIRTY в переменной dwFlags объекта структуры MMIOINFO. В противном случае при вызове функций mmioAdvance информация, содержащаяся в буфере, не будет записана на диск. При достижении конца файла, открытого для чтения, функция mmioAdvance не возвращает значения ошибки, хотя и не считывает никакой информации. Для проверки достижения конца файла проверьте значения переменных pchNext и pchEndRead объекта структуры MMIOINFO. Если после вызова функции mmioAdvance их значения равны, то достигнут конец файла.

Описание данной функции содержится в файле заголовка mmsystem.h. При работе с данной функцией следует включить в проект библиотеку winmm.lib.

MmioAscend

MMRESULT mmioAscend( HMMIO hmmio, LPMMCKINFO lpck, UINT wFlags );

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

В случае успешного завершения возвращает значение MMSYSERR_NOERROR. В противном случае возвращаемое значение может принимать одно из следующих значений:

  • MMIOERR_CANNOTSEEK — ошибка при поиске конца вложенного блока.

  • MMIOERR_CANNOTWRITE — содержимое буфера не может быть записано на диск.

Аргументы

  1. hmmio — дескриптор открытого файла формата RIFF.

  2. lpck — указатель на определённый в приложении объект структуры MMCKINFO, заполненный до этого функцией mmioDescend или mmioCreateChunk.

  3. wFlags — зарезервирован. Должен иметь нулевое значение.

Примечание

Функция mmioAscend перемещает текущую позицию на начало фрагмента файла формата RIFF, следующего за вложенным блоком, найденным функцией mmioDescend или созданным функцией mmioCreateChunk.

Если вложенный блок был найден функцией mmioDescend, то функция mmioAscend ищет позицию, расположенную за концом данного блока (включая дополнительные буфера, если ни были созданы для данного вложенного блока).

Если данный блок был создан и открыт функцией mmioCreateChunk или в переменной dwFlags объекта структуры MMCKINFO, на который указывает аргумент lpck, установлен флаг MMIO_DIRTY, в качестве конца вложенного блока рассматривается текущая позиция в файле. Если при этом размер области данных вложенного фрагмента отличается от значения переменной cksize объекта структуры MMCKINFO при вызове функции mmioCreateChunk, функция mmioAscend корректирует размер области данных блока перед его записью в файл. Если при этом размер области данных вложенного блока имеет нечётное значение, то функция mmioAscend дописывает в конец области данных нулевой байт, не меняя при этом нечётного значения переменной. После выхода из функции текущая позиция в файле устанавливается за концом области данных вложенного блока (включая добавленный при необходимости нулевой байт).

Описание данной функции содержится в файле заголовка mmsystem.h. При работе с данной функцией следует включить в проект библиотеку winmm.lib.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]