Поделиться через


KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

Свойство KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION указывает выделенный драйвером циклический буфер для звуковых данных и определяет требования к уведомлениям о событиях.

В следующей таблице перечислены функции этого свойства.

Сводная таблица использования

Получить Присвойте параметру Назначение Тип дескриптора свойства Тип значения свойства

Да

Нет

Pin

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSRTAUDIO_BUFFER

Дескриптор свойства (данные экземпляра) состоит из KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION структуры, содержащей структуру KSPROPERTY вместе с другими элементами. Клиент записывает запрошенный размер буфера в структуру . Клиент должен указать базовый адрес как NULL , если не требуется конкретный базовый адрес.

Это свойство используется, когда требуется уведомление о событиях на основе DMA. В зависимости от элемента NotificationCount зарегистрированные события передаются один раз (в конце) или два раза (в середине и конце) за цикл через циклический буфер. События регистрируются с помощью KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT после успешного вызова KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION.

Значение свойства (данные операции) — это структура типа KSRTAUDIO_BUFFER. Драйвер заполняет эту структуру фактическим размером буфера, базовым адресом и флагом барьера памяти для выделенного им циклического буфера.

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

Запрос свойства KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION возвращает STATUS_SUCCESS, указывающий на успешное выполнение. В противном случае запрос возвращает соответствующий код состояния сбоя. В следующей таблице показаны некоторые возможные коды состояния сбоя.

Код состояния Значение

STATUS_UNSUCCESSFUL

Невозможно выделить циклический буфер с указанной комбинацией атрибутов буфера.

STATUS_INSUFFICIENT_RESOURCES

Память для буфера не может быть выделена.

STATUS_DEVICE_NOT_READY

Устройство не готово.

Комментарии

Базовый адрес — это адрес виртуальной памяти в начале циклического буфера. Клиент может напрямую получить доступ к буферу по этому адресу. Буфер является непрерывным в виртуальной памяти. Драйвер определяет, является ли буфер непрерывным в физической памяти.

Клиент задает базовый адрес в дескрипторе свойства значение NULL. Драйвер задает базовый адрес в значении свойства виртуальный адрес выделенного звукового буфера.

Как правило, звуковое оборудование требует, чтобы звуковой буфер начинался и заканчиваться на границах образца, или он соответствует другим типам аппаратных ограничений выравнивания. Если доступно достаточно памяти, фактический размер буфера — это запрошенный размер, округленный (вверх или вниз) до ближайшей выборки или другой границы с аппаратными ограничениями. В противном случае фактический размер может быть меньше запрошенного размера.

Если запрос KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION свойства завершается успешно, значение свойства, которое является структурой типа KSRTAUDIO_BUFFER, содержит адрес и размер буфера, выделенного драйвером.

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

Требования

Версия

Доступно в операционных системах Windows Vista и более поздних версий.

Заголовок

Ksmedia.h

См. также

KSPROPERTY

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT