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


Метод 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 Audio Codecs должны указать CacheType mmWriteCombined, чтобы обеспечить совместность кэша. Это связано с тем, что контроллер аудио с высоким определением Intel может быть настроен для операции, отличной от snoop.
 
Получив запрос KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION от клиента, драйвер портов вызывает метод AllocateBufferWithNotification для выделения циклического буфера, который драйвер порта может позже сопоставить с виртуальным адресным пространством клиента. AllocateBufferWithNotification работает таким образом, как IMiniportWaveRTStream::AllocateAudioBuffer. Кроме того, AllocateBufferWithNotification определяет драйвер порта WaveRT, который требуется уведомление о событиях на основе DMA, и указывает количество уведомлений на цикл циклического буфера.

Требования

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

См. также

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE