функция обратного вызова 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 (reset)
- 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 (включая Hdaudio.h) |
IRQL | <=DISPATCH_LEVEL |