функция обратного вызова PSET_DMA_ENGINE_STATE (hdaudio.h)
Подпрограмма setDmaEngineState задает состояние одного или нескольких обработчиков DMA в состояние "Запуск", "Остановлено", "Приостановлено" или "Сброс".
Тип указателя функции для подпрограммы SetDmaEngineState определяется следующим образом.
Синтаксис
PSET_DMA_ENGINE_STATE PsetDmaEngineState;
NTSTATUS PsetDmaEngineState(
[in] PVOID _context,
[in] HDAUDIO_STREAM_STATE StreamState,
[in] ULONG NumberOfHandles,
[in] PHANDLE Handles
)
{...}
Параметры
[in] _context
Задает значение контекста из элемента контекста context структуры HDAUDIO_BUS_INTERFACE, HDAUDIO_BUS_INTERFACE_V2или HDAUDIO_BUS_INTERFACE_BDL.
[in] StreamState
Задает новое состояние потока. Задайте для этого параметра одно из следующих значений перечисления HDAUDIO_STREAM_STATE:
- PauseState (приостановлено)
- ResetState (сброс)
- RunState (выполняется)
- StopState (остановлено)
[in] NumberOfHandles
Указывает количество дескрипторов в обрабатывает массив. Задайте для этого параметра значение, отличное от нуля.
[in] Handles
Указатель на массив дескрипторов в обработчики DMA. Укажите значение, отличное отNULL, для этого параметра.
Возвращаемое значение
SetDmaEngineState возвращает STATUS_SUCCESS, если вызов завершается успешно при изменении состояний обработчиков DMA. В противном случае подпрограмма возвращает соответствующий код ошибки. В следующей таблице показаны некоторые возможные коды состояния возврата.
Возвращаемый код | Описание |
---|---|
|
Указывает, что один из дескрипторов недопустим. |
|
Указывает, что одно из значений параметра неверно (недопустимое значение параметра или неправильный указатель). |
|
Указывает, что в настоящее время буфер не выделяется для одного из подсистем DMA. |
Замечания
Эта подпрограмма изменяет состояние одного или нескольких обработчиков DMA в состояние, указанное параметром streamState. Подпрограмма синхронизирует переходы состояния всех обработчиков DMA, которые дескриптор в обрабатывает массива. Дополнительные сведения см. в разделе Синхронизация двух или нескольких потоков.
Перед вызовом этой процедуры настройте каждый обработчик DMA в обрабатывает массив:
- Если используется HDAUDIO_BUS_INTERFACE версия HD Audio DDI, вызовите AllocateDmaBuffer для настройки подсистемы DMA.
- При использовании HDAUDIO_BUS_INTERFACE_BDL версии DDI вызовите SetupDmaEngineWithBdl, чтобы настроить подсистему DMA.
Состояние потока не может переходить непосредственно между выполнением и сбросом. Вместо этого поток должен сначала пройти через промежуточное состояние приостановки или остановки:
- Из состояния "Запуск" или "Сброс" состояние потока может изменяться непосредственно на "Приостановлено" или "Остановлено".
- Из приостановленного или остановленного состояния состояние потока может измениться непосредственно на "Запуск" или "Сброс".
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | hdaudio.h (include Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |