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

IDirectSoundBuffer::Unlock

HRESULT Unlock( LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2 );

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

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

  • DSERR_INVALIDCALL — вызов данной функции недопустим при текущем состоянии объекта.

  • DSERR_INVALIDPARAM — один или несколько аргументов метода имеют недопустимые значения.

  • DSERR_PRIOLEVELNEEDED — вызывающее приложение имеет недостаточно высокий уровень приоритета для вызова данной функции.

Аргументы

  1. lpvAudioPtr1 — указатель на величину, полученную в аргументе lpvAudioPtr1 метода IDirectSoundBuffer::Lock.

  2. dwAudioBytes1 — размер в байтах блока данных фактически записанного по адресу lpvAudioPtr1. Значение данного аргумента не должно превышать размера буфера, возвращённого в методе IDirectSoundBuffer::Lock.

  3. lpvAudioPtr2 — указатель на величину, полученную в аргументе lpvAudioPtr2 метода IDirectSoundBuffer::Lock.

  4. dwAudioBytes2 — размер в байтах блока данных фактически записанного по адресу lpvAudioPtr2. Значение данного аргумента не должно превышать размера буфера, возвращённого в методе IDirectSoundBuffer::Lock.

Примечание

Метод IDirectSoundBuffer::Unlock освобождает заблокированный аудио буфер.

Для правильного согласования работы методов IDirectSoundBuffer::Lock и IDirectSoundBuffer::Unlock приложение должно передавать данной функции как значение lpvAudioPtr1, так и значение lpvAudioPtr2, возвращённые методом IDirectSoundBuffer::Lock. Передача второго указателя обязательна даже в том случае, когда по этому адресу не было записано никакой информации.

Приложение должно передать объём информации, записанный по каждому из двух адресов в переменных dwAudioBytes1 и dwAudioBytes2.

Необходимо следить за тем, чтобы аудио буфера не блокировались в течение долгого времени.

IDirectSoundCapture

Методы интерфейса IDirectSoundCapture используются для создания буферов записи аудио информации. Для создания объекта данного интерфейса используется функция DirectSoundCaptureCreate. Как и все другие интерфейсы COM, IDirectSoundCapture наследует методы интерфейса IUnknown.

В качестве указателя на интерфейс IDirectSoundCapture определён тип LPDIRECTSOUNDCAPTURE:

typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE;

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

IDirectSoundCapture::CreateCaptureBuffer

HRESULT CreateCaptureBuffer( LPDSCBUFFERDESC lpDSCBufferDesc, LPLPDIRECTSOUNDCAPTUREBUFFER lplpDirectSoundCaptureBuffer, LPUNKNOWN pUnkOuter );

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

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

  • DSERR_BADFORMAT — указанный формат не поддерживается.

  • DSERR_GENERIC — в подсистеме DirectSound возникла неопознанная ошибка.

  • DSERR_INVALIDPARAM — один или несколько аргументов метода имеют недопустимые значения.

  • DSERR_NODRIVER — отсутствует драйвер аудио устройства.

  • DSERR_OUTOFMEMORY — недостаточно памяти для выполнения требуемой операции.

  • DSERR_UNINITIALIZED — перед вызовом данной функции не был вызван метод IDirectSound::Initialize или его выполнение завершилось с ошибкой.

Аргументы

  1. lpDSCBufferDesc — указатель на объект структуры DSCBUFFERDESC содержащий параметры создаваемого буфера записи.

  2. lplpDirectSoundCaptureBuffer — адрес указателя на интерфейс IDirectSoundCaptureBuffer.

  3. pUnkOuter — используется при агрегировании IUnknown. Должен иметь нулевое значение.

Примечание

Метод IDirectSoundCapture::CreateCaptureBuffer используется при создании буфера записи аудио информации.

В отличие от объекта DirectSound, позволяющего микшировать различные источники при выводе аудио информации, объект DirectSoundCapture может работать только с одним источником аудио информации. В первой версии DirectX объект DirectSoundCapture не допускал создания нескольких буферов записи для одного и того же физического устройства.

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