ВУЗ:
Составители:
Рубрика:
- 46 -
фрагмента может быть изменена, поэтому для ее обновле-
ния следует вызвать функцию mmioAscend); флаг
MMIO_DIRTY может быть установлен при создании
фрагмента функцией mmioCreateChunk
В нижеприведенном примере создается новый файл, подготавливается
структура
MMCKINFO, а затем создается фрагмент "RIFF", для чего вы-
зывается функция
mmioCreateChunk
hFile=mmioOpen(szFileName, NULL,
MMIO_CREATE | MMIO_READWRITE);
if (hFile != NULL)
{
ck.ckid=MMIO_CREATERIFF;
ck.cksize=waveioocbIn.lpWaveHdr->dwBytesRecorded
+ sizeof(PCMWAVEFORMAT) + 20;
ck.fccType=mmioFOURCC(‘W’, ‘A’, ‘V’, ‘E’);
mmioCreateChunk(hFile, (LPMMCKINFO) &ck, MMIO_CREATERIFF);
}
С целью поиска нужного фрагмента внутри RIFF-файла нет необхо-
димости выполнять побайтное чтение файла и анализ его внутренней
структуры; найти необходимый фрагмент и выполнить позиционирование
относительно этого фрагмента можно с помощью функций
mmioDescend и
mmioAscend.
Функция
mmioDescend ищет заданный фрагмент начиная с текущей
позиции; при нахождении фрагмента текущая позиция будет установлена
на область данных (она расположена на 8 байт ближе к концу файла от на-
чала фрагмента, см. рис 3.9).
UINT
mmioDescend(HMMIO hmmio, // идентификатор файла
LPMMCKINFO lpck, // указатель на структуру
// MMCKINFO для
// текущего фрагмента
LPMMCKINFO lpckParent, // указатель на стр-ру
// MMCKINFO для
// внешнего фрагмента
UINT wFlags); // режим поиска
Здесь lpckParent - указатель на структуру MMCKINFO, описываю-
щую внешний фрагмент, внутри которого выполняется поиск. В качестве
внешнего фрагмента могут выступать только фрагменты ‘RIFF’ или
‘LIST’; если внешний фрагмент отсутствует, этот параметр можно указы-
вать как
NULL. Если указан wFlags=MMIO_FINDCHUNK, выполняется
- 46 -
фрагмента может быть изменена, поэтому для ее обновле-
ния следует вызвать функцию mmioAscend); флаг
MMIO_DIRTY может быть установлен при создании
фрагмента функцией mmioCreateChunk
В нижеприведенном примере создается новый файл, подготавливается
структура MMCKINFO, а затем создается фрагмент "RIFF", для чего вы-
зывается функция mmioCreateChunk
hFile=mmioOpen(szFileName, NULL,
MMIO_CREATE | MMIO_READWRITE);
if (hFile != NULL)
{
ck.ckid=MMIO_CREATERIFF;
ck.cksize=waveioocbIn.lpWaveHdr->dwBytesRecorded
+ sizeof(PCMWAVEFORMAT) + 20;
ck.fccType=mmioFOURCC(‘W’, ‘A’, ‘V’, ‘E’);
mmioCreateChunk(hFile, (LPMMCKINFO) &ck, MMIO_CREATERIFF);
}
С целью поиска нужного фрагмента внутри RIFF-файла нет необхо-
димости выполнять побайтное чтение файла и анализ его внутренней
структуры; найти необходимый фрагмент и выполнить позиционирование
относительно этого фрагмента можно с помощью функций mmioDescend и
mmioAscend.
Функция mmioDescend ищет заданный фрагмент начиная с текущей
позиции; при нахождении фрагмента текущая позиция будет установлена
на область данных (она расположена на 8 байт ближе к концу файла от на-
чала фрагмента, см. рис 3.9).
UINT
mmioDescend(HMMIO hmmio, // идентификатор файла
LPMMCKINFO lpck, // указатель на структуру
// MMCKINFO для
// текущего фрагмента
LPMMCKINFO lpckParent, // указатель на стр-ру
// MMCKINFO для
// внешнего фрагмента
UINT wFlags); // режим поиска
Здесь lpckParent - указатель на структуру MMCKINFO, описываю-
щую внешний фрагмент, внутри которого выполняется поиск. В качестве
внешнего фрагмента могут выступать только фрагменты ‘RIFF’ или
‘LIST’; если внешний фрагмент отсутствует, этот параметр можно указы-
вать как NULL. Если указан wFlags=MMIO_FINDCHUNK, выполняется
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »
