ВУЗ:
Составители:
Рубрика:
- 55 -
typedef struct wavehdr_tag
{
LPSTR lpData; // адрес блока данных
DWORD dwBufferLength; // размер блока данных
DWORD dwBytesRecorded; // количество записанных байт
// (только при записи)
DWORD dwUser; // пользовательские данные
DWORD dwFlags; // флаги состояния буфера данных
DWORD dwLoops; // кратность проигрывания файла
// (только при воспроизведении)
struct wavehdr_tag far *lpNext; // зарезервировано
DWORD reserved; // зарезервировано (не используется)
} WAVEHDR;
typedef WAVEHDR *PWAVEHDR;
typedef WAVEHDR NEAR *NPWAVEHDR;
typedef WAVEHDR FAR *LPWAVEHDR;
После заказа блока памяти функцией GlobalAlloc с флагами
GMEM_MOVEABLE и GMEM_SHARE необходимо зафиксировать его
функцией
GlobalLock; полученный в результате фиксирования адрес бло-
ка записывается в поле
lpData структуры WAVEHDR, а размер блока - в
поле
dwBufferLength.
Теоретически размер блока памяти для воспроизводимых данных мо-
жет иметь очень большой размер (определяется двойным словом), однако
существует практическое ограничение на размер блока памяти - он должен
помещаться целиком в оперативную память (иначе его невозможно зафик-
сировать). Поэтому в некоторых случаях (при проигрывании
очень длин-
ных WAV-файлов) имеет смысл создать два или более блоков, поперемен-
но заполняя их из файла с аудиоданными и передавая драйверу для проиг-
рывания в асинхронном режиме.
Структура
WAVEHDR используется не только для воспроизведения,
но и для записи; в этом случае после завершения записи блока в поле
dwBytesRecorded будет находиться количество записанных байт данных
(при воспроизведении это поле не используется).
Через поле
dwUser приложение может передать функции обратного
вызова или обработчику сообщения для данного устройства любую допол-
нительную информацию.
Поле
dwFlag после прихода сообщения о событии или передачи
управления функции обратного вызова будет содержать информацию о
состоянии блока; в этом случае могут быть установлены следующие флаги
Идентификатор флага Описание
WHDR_DONE
Работа с буфером данных закончена; данные из буфера бы-
ли успешно проиграны или записаны, после чего драйвер
- 55 -
typedef struct wavehdr_tag
{
LPSTR lpData; // адрес блока данных
DWORD dwBufferLength; // размер блока данных
DWORD dwBytesRecorded; // количество записанных байт
// (только при записи)
DWORD dwUser; // пользовательские данные
DWORD dwFlags; // флаги состояния буфера данных
DWORD dwLoops; // кратность проигрывания файла
// (только при воспроизведении)
struct wavehdr_tag far *lpNext; // зарезервировано
DWORD reserved; // зарезервировано (не используется)
} WAVEHDR;
typedef WAVEHDR *PWAVEHDR;
typedef WAVEHDR NEAR *NPWAVEHDR;
typedef WAVEHDR FAR *LPWAVEHDR;
После заказа блока памяти функцией GlobalAlloc с флагами
GMEM_MOVEABLE и GMEM_SHARE необходимо зафиксировать его
функцией GlobalLock; полученный в результате фиксирования адрес бло-
ка записывается в поле lpData структуры WAVEHDR, а размер блока - в
поле dwBufferLength.
Теоретически размер блока памяти для воспроизводимых данных мо-
жет иметь очень большой размер (определяется двойным словом), однако
существует практическое ограничение на размер блока памяти - он должен
помещаться целиком в оперативную память (иначе его невозможно зафик-
сировать). Поэтому в некоторых случаях (при проигрывании очень длин-
ных WAV-файлов) имеет смысл создать два или более блоков, поперемен-
но заполняя их из файла с аудиоданными и передавая драйверу для проиг-
рывания в асинхронном режиме.
Структура WAVEHDR используется не только для воспроизведения,
но и для записи; в этом случае после завершения записи блока в поле
dwBytesRecorded будет находиться количество записанных байт данных
(при воспроизведении это поле не используется).
Через поле dwUser приложение может передать функции обратного
вызова или обработчику сообщения для данного устройства любую допол-
нительную информацию.
Поле dwFlag после прихода сообщения о событии или передачи
управления функции обратного вызова будет содержать информацию о
состоянии блока; в этом случае могут быть установлены следующие флаги
Идентификатор флага Описание
WHDR_DONE Работа с буфером данных закончена; данные из буфера бы-
ли успешно проиграны или записаны, после чего драйвер
Страницы
- « первая
- ‹ предыдущая
- …
- 53
- 54
- 55
- 56
- 57
- …
- следующая ›
- последняя »
