KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION
Свойство KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION указывает выделенный драйвером циклический буфер для звуковых данных и определяет требования к уведомлениям о событиях.
В следующей таблице перечислены функции этого свойства.
Сводная таблица использования
Получить | Присвойте параметру | Назначение | Тип дескриптора свойства | Тип значения свойства |
---|---|---|---|---|
Да |
Нет |
Pin |
Дескриптор свойства (данные экземпляра) состоит из 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 |