Compartilhar via


KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

A propriedade KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION especifica um buffer cíclico alocado pelo driver para dados de áudio e identifica os requisitos de notificação de eventos.

A tabela a seguir resume os recursos dessa propriedade.

Tabela de Resumo de Uso

Obter Definir Destino Tipo de descritor de propriedade Tipo de valor da propriedade

Sim

Não

Pin

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSRTAUDIO_BUFFER

O descritor de propriedade (dados de instância) consiste em uma estrutura KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION que contém uma estrutura KSPROPERTY junto com outros membros. O cliente grava o tamanho do buffer solicitado na estrutura. O cliente deve especificar o endereço base como NULL , a menos que um endereço base específico seja necessário.

Essa propriedade é usada quando você deseja uma notificação de evento controlada por DMA. Com base no membro NotificationCount , os eventos registrados são sinalizados uma vez (no final) ou duas vezes (no ponto médio e no final) por ciclo por meio do buffer cíclico. Os eventos são registrados usando KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT depois de chamar KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION com êxito.

O valor da propriedade (dados de operação) é uma estrutura do tipo KSRTAUDIO_BUFFER. O driver preenche essa estrutura com o tamanho real do buffer, o endereço base e o sinalizador de barreira de memória para o buffer cíclico alocado.

Valor retornado

Uma solicitação de propriedade KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION retorna STATUS_SUCCESS para indicar que foi concluída com êxito. Caso contrário, a solicitação retornará uma falha apropriada status código. A tabela a seguir mostra algumas das possíveis falhas status códigos.

Código de status Significado

STATUS_UNSUCCESSFUL

Um buffer cíclico com a combinação especificada de atributos de buffer não pode ser alocado.

STATUS_INSUFFICIENT_RESOURCES

A memória do buffer não pode ser alocada.

STATUS_DEVICE_NOT_READY

O dispositivo não está pronto.

Comentários

O endereço base é o endereço de memória virtual no início do buffer cíclico. O cliente pode acessar diretamente o buffer neste endereço. O buffer é contíguo na memória virtual. O driver determina se o buffer é contíguo na memória física.

O cliente define o endereço base no descritor de propriedade como NULL. O driver define o endereço base no valor da propriedade como o endereço virtual do buffer de áudio alocado.

Normalmente, o hardware de áudio requer que o buffer de áudio comece e termine em limites de exemplo ou atenda a outros tipos de restrições de alinhamento dependentes de hardware. Se houver memória suficiente disponível, o tamanho real do buffer será o tamanho solicitado arredondado (para cima ou para baixo) para o exemplo mais próximo ou outro limite restrito por hardware. Caso contrário, o tamanho real pode ser menor que o tamanho solicitado.

Se uma solicitação de propriedade KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION for bem-sucedida, o valor da propriedade, que é uma estrutura do tipo KSRTAUDIO_BUFFER, conterá o endereço e o tamanho do buffer alocado pelo driver.

Fechar o pino libera automaticamente o buffer alocado por meio dessa propriedade.

Requisitos

Versão

Disponível no Windows Vista e em sistemas operacionais Windows posteriores.

Cabeçalho

Ksmedia.h

Confira também

KSPROPERTY

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT