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

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

Синтаксис

MMRESULT mmioDescend(
  HMMIO          hmmio,
  LPMMCKINFO     pmmcki,
  const MMCKINFO *pmmckiParent,
  UINT           fuDescend
);

Параметры

hmmio

Дескриптор открытого RIFF-файла.

pmmcki

Указатель на буфер, который получает структуру MMCKINFO .

pmmckiParent

Указатель на дополнительную определяемую приложением структуру MMCKINFO , определяющую родительский элемент искомого фрагмента. Если этот параметр не равен NULL, mmioDescend предполагает, что структура MMCKINFO , на которую она ссылается, была заполнена при вызове mmioDescend для спуска к родительскому фрагменту, а mmioDescend выполняет поиск фрагмента в родительском блоке. Присвойте этому параметру значение NULL , если родительский блок не указан.

fuDescend

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

Значение Значение
MMIO_FINDCHUNK Выполняет поиск фрагмента с указанным идентификатором блока.
MMIO_FINDLIST Выполняет поиск блока с идентификатором блока LIST и указанным типом формы.
MMIO_FINDRIFF Выполняет поиск блока с идентификатором "RIFF" и указанным типом формы.

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

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

Код возврата Описание
MMIOERR_CHUNKNOTFOUND
Конец файла (или конец родительского фрагмента, если он указан) был достигнут до того, как был найден нужный фрагмент.

Комментарии

Блок "RIFF" состоит из четырехбайтового идентификатора блока (тип FOURCC), за которым следует размер блока с четырьмя байтами (тип DWORD), за которым следует часть данных блока, за которой следует пустой байт, если размер части данных нечетный. Если идентификатор блока — "RIFF" или "LIST", первые четыре байта части данных блока являются типом формы или списка (тип FOURCC).

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

Если mmioDescend не удалось найти фрагмент, текущая позиция файла не определена. При успешном выполнении mmioDescend текущее положение файла изменяется. Если фрагмент является фрагментом "RIFF" или "LIST", новая позиция файла будет сразу после типа формы или списка (12 байт от начала блока). Для других фрагментов новая позиция файла будет началом части данных блока (8 байт от начала блока).

Функция mmioDescend заполняет структуру MMCKINFO , на которую указывает параметр lpck , следующими сведениями:

  • Элемент ckid — это блок. Если для wFlags указан флаг MMIO_FINDCHUNK, MMIO_FINDRIFF или MMIO_FINDLIST, структура MMCKINFO также используется для передачи параметров в mmioDescend. В этом случае элемент ckid задает четырехзначный код идентификатора блока, типа формы или типа списка, который требуется найти.
  • Член cksize — это размер (в байтах) части данных блока. Размер включает тип формы или тип списка (если таковой имеется), но не включает 8-байтовый заголовок блока или байт панели в конце данных (если таковые имеются).
  • Элемент fccType — это тип формы, если ckid имеет значение "RIFF", или тип списка, если ckid имеет значение "LIST". В противном случае он имеет значение NULL.
  • Элемент dwDataOffset — это смещение файла начала части данных блока. Если фрагмент является блоком "RIFF" или "LIST", этот элемент является смещением типа формы или типа списка.
  • Член dwFlags содержит другие сведения о блоке. В настоящее время эта информация не используется и имеет нулевое значение.

Требования

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