Программирование мультимедиа-систем - 56 стр.

UptoLike

Составители: 

- 56 -
вернул буфер приложению
WHDR_BEGINLOOP
Данный буфер является первым в цикле (флаг используется
только при воспроизведении). При желании проиграть в
цикле только один блок он должен быть отмечен и флагом
WHDR_BEGINLOOP и флагом WHDR_ENDLOOP
WHDR_PREPARED
Буфер подготовлен для воспроизведения функцией
waveOutPrepareHeader или для записи функцией waveIn-
PrepareHeader
Приложение может указать драйверу, что блок необходимо проиграть
несколько раз подряд, для этого следует указать число повторов в поле
dwLoops.
При нормальном завершении функция waveOutPrepareHeader воз-
вращает нуль, в противном случае указанный в таблице код ошибки.
Код ошибки Описание ошибки
MMSYSERR_INVALHANDLE
Указан неправильный идентификатор устройства
MMSYSERR_NOMEM
Недостаток памяти для выполнения операции
После обработки блока памяти функцией
waveOutPrepareHeader его
можно проиграть с помощью вызова функции
waveOutWrite.
UINT
waveOutWrite(HWAVEOUT hWaveOut, // идентификатор устройства
LPWAVEHDR lpWaveOutHdr, // указатель на ст-ру WAVEHDR
UINT wSize); // размер структуры WAVEHDR
При нормальном завершении функция waveOutWrite возвращает
нуль, в противном случае нижеуказанный код ошибки
Код ошибки Описание ошибки
MMSYSERR_INVALHANDLE
Указан неправильный идентификатор устройства
MMSYSERR_UNPREPARED
Переданный блок функции не был подготовлен
функцией waveOutPrepareHeader
Реально проигрывание блока начинается после вызова функции
waveOutWrite, в случае проигрывания блока до конца или остановки про-
игрывания определенная указанным при открытии устройства через пара-
метр
dwCallback идентификатором оконная функция получит сообщение
MM_WOM_DONE.
После получения приложением сообщения
MM_WOM_DONE оно
должно передать блок функции
waveOutUnprepareHeader, затем разбло-
кировать его функцией
GlobalUnlock и освободить (если этот блок памяти
больше не нужен) функцией
GlobalFree.
                                    - 56 -


                     вернул буфер приложению
WHDR_BEGINLOOP       Данный буфер является первым в цикле (флаг используется
                     только при воспроизведении). При желании проиграть в
                     цикле только один блок он должен быть отмечен и флагом
                     WHDR_BEGINLOOP и флагом WHDR_ENDLOOP
WHDR_PREPARED        Буфер подготовлен для воспроизведения функцией
                     waveOutPrepareHeader или для записи функцией waveIn-
                     PrepareHeader

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

      Код ошибки                           Описание ошибки
MMSYSERR_INVALHANDLE        Указан неправильный идентификатор устройства
MMSYSERR_NOMEM              Недостаток памяти для выполнения операции

   После обработки блока памяти функцией waveOutPrepareHeader его
можно проиграть с помощью вызова функции waveOutWrite.

UINT
waveOutWrite(HWAVEOUT hWaveOut, // идентификатор устройства
             LPWAVEHDR lpWaveOutHdr, // указатель на ст-ру WAVEHDR
             UINT wSize); // размер структуры WAVEHDR

    При нормальном завершении функция waveOutWrite возвращает
нуль, в противном случае нижеуказанный код ошибки

       Код ошибки                           Описание ошибки
MMSYSERR_INVALHANDLE         Указан неправильный идентификатор устройства
MMSYSERR_UNPREPARED          Переданный блок функции не был подготовлен
                             функцией waveOutPrepareHeader

    Реально проигрывание блока начинается после вызова функции
waveOutWrite, в случае проигрывания блока до конца или остановки про-
игрывания определенная указанным при открытии устройства через пара-
метр dwCallback идентификатором оконная функция получит сообщение
MM_WOM_DONE.
    После получения приложением сообщения MM_WOM_DONE оно
должно передать блок функции waveOutUnprepareHeader, затем разбло-
кировать его функцией GlobalUnlock и освободить (если этот блок памяти
больше не нужен) функцией GlobalFree.