Compartir a través de


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

El AllocateAudioBufferWithNotification método asigna un búfer cíclico para los datos de audio cuando desea implementar una notificación de eventos controlada por DMA. Si no desea notificación de eventos, debe usar IMiniportWaveRTStream::AllocateAudioBuffer.

Sintaxis

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 el número de notificaciones deseadas por ciclo de búfer. Los valores válidos son 1 o 2, donde 1 indica una sola notificación al final del búfer cíclico y 2 indica dos notificaciones por ciclo de búfer, una en el punto medio del búfer y otra al final.

[in] RequestedSize

Especifica el tamaño solicitado, en bytes, del búfer de audio.

[out] AudioBufferMdl

Puntero de salida para una lista de descriptores de memoria (MDL) que describe el búfer de audio. Este parámetro apunta a una variable de puntero asignada por el autor de la llamada en la que el método escribe un puntero en la MDL.

[out] ActualSize

Puntero de salida para el tamaño real, en bytes, del búfer asignado. Este parámetro apunta a una variable ULONG en la que el método escribe el valor de tamaño.

[out] OffsetFromFirstPage

Puntero de salida para el desplazamiento (en bytes) del búfer, desde el inicio de la primera página de MDL. Este parámetro apunta a una variable ULONG asignada por el autor de la llamada en la que el método escribe el valor de desplazamiento.

[out] CacheType

Especifica el tipo de almacenamiento en caché que el cliente solicita para el búfer de audio. Este parámetro es un valor de enumeración MEMORY_CACHING_TYPE

Valor devuelto

AllocateBufferWithNotification devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, el método devuelve un código de estado de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de estado de error.

Código devuelto Descripción
STATUS_UNSUCCESSFUL
El controlador no admite la combinación especificada de atributos de búfer.
STATUS_INSUFFICIENT_RESOURCES
No hay memoria suficiente disponible para asignar el búfer.
STATUS_DEVICE_NOT_READY
El dispositivo no está listo.

Comentarios

Nota Los miniportes para códecs de audio de alta definición de Intel deben especificar un cacheType de MmWriteCombined para garantizar la coherencia de la memoria caché. Esto se debe a que el controlador de audio de alta definición intel se puede configurar para la operación que no es de snoop.
 
Después de recibir una solicitud de KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION del cliente, el controlador de puerto llama al AllocateBufferWithNotification método para asignar un búfer cíclico que el controlador de puerto puede asignar posteriormente al espacio de direcciones virtuales del cliente. AllocateBufferWithNotification funciona de forma similar a IMiniportWaveRTStream::AllocateAudioBuffer. Además, AllocateBufferWithNotification identifica al controlador de puerto waveRT que se desea la notificación de eventos controlada por DMA y especifica cuántas notificaciones por ciclo del búfer cíclico son necesarias.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y en sistemas operativos Windows posteriores.
Plataforma de destino Universal
Encabezado portcls.h
IRQL Nivel pasivo.

Consulte también

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE