Поделиться через


Метод IMiniportWaveRTStreamNotification::AllocateBufferWithNotification (portcls.h)

Метод AllocateAudioBufferWithNotification выделяет циклический буфер для звуковых данных, если требуется реализовать уведомления о событиях на основе DMA. Если вы не хотите получать уведомления о событиях, используйте IMiniportWaveRTStream::AllocateAudioBuffer.

Синтаксис

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

Параметры

[in] NotificationCount

Указывает количество уведомлений, которое требуется для каждого цикла буфера. Допустимые значения: 1 или 2, где 1 обозначает одно уведомление в конце циклического буфера, а 2 — два уведомления на цикл буфера: одно в середине буфера и одно в конце.

[in] RequestedSize

Указывает запрошенный размер (в байтах) звукового буфера.

[out] AudioBufferMdl

Выходной указатель для списка дескрипторов памяти (MDL), описывающего звуковой буфер. Этот параметр указывает на переменную указателя, выделенную вызывающим объектом, в которую метод записывает указатель на MDL.

[out] ActualSize

Указатель вывода для фактического размера выделенного буфера (в байтах). Этот параметр указывает на переменную ULONG, в которую метод записывает значение размера.

[out] OffsetFromFirstPage

Выходной указатель смещения (в байтах) буфера с начала первой страницы MDL. Этот параметр указывает на выделенную вызывающим объектом переменную ULONG, в которую метод записывает значение смещения.

[out] CacheType

Указывает тип кэширования, запрашиваемого клиентом для звукового буфера. Этот параметр является значением перечисления MEMORY_CACHING_TYPE .

Возвращаемое значение

AllocateBufferWithNotification возвращает STATUS_SUCCESS, если вызов был выполнен успешно. В противном случае метод возвращает соответствующий код состояния ошибки. В следующей таблице показаны некоторые из возможных кодов состояния ошибок.

Код возврата Описание
STATUS_UNSUCCESSFUL
Драйвер не поддерживает указанное сочетание атрибутов буфера.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно доступной памяти для выделения буфера.
STATUS_DEVICE_NOT_READY
Устройство не готово.

Комментарии

Примечание Минипорты для аудиокодеков Intel High Definition Должны указывать Тип кэша MmWriteCombined, чтобы обеспечить когерентность кэша. Это связано с тем, что контроллер Intel High Definition Audio Controller может быть настроен для операций, отличных от snoop.
 
Получив запрос KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION от клиента, драйвер порта вызывает AllocateBufferWithNotification метод для выделения циклического буфера, который драйвер порта впоследствии сможет сопоставить с виртуальным адресным пространством клиента. AllocateBufferWithNotification работает аналогично IMiniportWaveRTStream::AllocateAudioBuffer. Кроме того, определяет драйвер порта WaveRT, AllocateBufferWithNotification что требуется уведомление о событиях на основе DMA, и указывает, сколько уведомлений требуется для цикла циклического буфера.

Требования

Требование Значение
Минимальная версия клиента Доступно в Операционных системах Windows Vista и более поздних версий.
Целевая платформа Универсальное
Верхняя часть portcls.h
IRQL Пассивный уровень.

См. также раздел

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE