Compartilhar via


Método IMiniportWaveRTStreamNotification::AllocateBufferWithNotification (portcls.h)

O AllocateAudioBufferWithNotification método aloca um buffer cíclico para dados de áudio quando você deseja implementar a notificação de evento controlada por DMA. Se você não quiser uma notificação de evento, deverá usar IMiniportWaveRTStream::AllocateAudioBuffer.

Sintaxe

NTSTATUS AllocateBufferWithNotification(
  [in]  ULONG               NotificationCount,
  [in]  ULONG               RequestedSize,
  [out] PMDL                *AudioBufferMdl,
  [out] ULONG               *ActualSize,
  [out] ULONG               *OffsetFromFirstPage,
  [out] MEMORY_CACHING_TYPE *CacheType
);

Parâmetros

[in] NotificationCount

Especifica o número de notificações desejadas por ciclo de buffer. Os valores válidos são 1 ou 2, em que 1 indica uma única notificação no final do buffer cíclico e 2 indica duas notificações por ciclo de buffer, uma no ponto médio do buffer e outra no final.

[in] RequestedSize

Especifica o tamanho solicitado, em bytes, do buffer de áudio.

[out] AudioBufferMdl

Ponteiro de saída para uma MDL (lista de descritores de memória) que descreve o buffer de áudio. Esse parâmetro aponta para uma variável de ponteiro alocada pelo chamador na qual o método grava um ponteiro no MDL.

[out] ActualSize

Ponteiro de saída para o tamanho real, em bytes, do buffer alocado. Esse parâmetro aponta para uma variável ULONG na qual o método grava o valor de tamanho.

[out] OffsetFromFirstPage

Ponteiro de saída para o deslocamento (em bytes) do buffer, desde o início da primeira página no MDL. Esse parâmetro aponta para uma variável ULONG alocada pelo chamador na qual o método grava o valor de deslocamento.

[out] CacheType

Especifica o tipo de cache que o cliente solicita para o buffer de áudio. Esse parâmetro é um valor de enumeração MEMORY_CACHING_TYPE

Retornar valor

AllocateBufferWithNotification retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, o método retornará um erro apropriado status código. A tabela a seguir mostra alguns dos possíveis códigos de status de erro.

Código de retorno Descrição
STATUS_UNSUCCESSFUL
O driver não dá suporte à combinação especificada de atributos de buffer.
STATUS_INSUFFICIENT_RESOURCES
Não há memória suficiente disponível para alocar o buffer.
STATUS_DEVICE_NOT_READY
O dispositivo não está pronto.

Comentários

Nota Miniportes para codecs de áudio de alta definição intel devem especificar um CacheType de MmWriteCombined para garantir a coerência do cache. Isso ocorre porque o Controlador de Áudio de Alta Definição da Intel pode ser configurado para a operação não bisbilhoteira.
 
Depois de receber uma solicitação de KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION do cliente, o driver de porta chama o AllocateBufferWithNotification método para alocar um buffer cíclico que o driver de porta pode mapear posteriormente para o espaço de endereço virtual do cliente. AllocateBufferWithNotification opera de maneira semelhante a IMiniportWaveRTStream::AllocateAudioBuffer. Além disso, AllocateBufferWithNotification identifica ao driver de porta WaveRT que a notificação de evento controlada por DMA é desejada e especifica quantas notificações por ciclo do buffer cíclico são necessárias.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e em sistemas operacionais Windows posteriores.
Plataforma de Destino Universal
Cabeçalho portcls.h
IRQL Nível passivo.

Confira também

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE