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 |
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 |