Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе представлены вспомогательные интерфейсы, добавленные корпорацией Майкрософт в свой драйвер класса аудиопорта (PortCls), чтобы упростить реализацию драйверов, поддерживающих разгрузку обработки звука.
При разработке минипорт-драйвера WaveRT, который будет работать с аудиоадаптером, способным обрабатывать аппаратно выгружаемые аудиопотоки, ваш минипорт-драйвер взаимодействует с PortCls для потоковой передачи и/или обработки звуковых данных.
PortCls может обрабатывать все свойства потоковой передачи ядра, связанного с разгрузкой (KS), и это упрощает разработку драйвера минипорта WaveRT для предоставления поддержки для обработки аппаратно-выгруженных аудиопотоков. В результате обновлений PortCls вызывает только базовый драйвер минипорта для аппаратных операций и (или) для конкретных драйверов с помощью двух только что определенных интерфейсов:
Необходимо разработать два класса для работы с этими интерфейсами, по одному для каждого интерфейса.
Работа с IMiniportAudioEngineNode
Класс, который вы разрабатываете для работы с IMiniportAudioEngineNode, также должен наследоваться от IMiniportWaveRT. Методы, определенные в IMiniportAudioEngineNode , позволяют драйверу использовать свойства KS, которые обращаются к звуковому обработчику через дескриптор фильтра KS. Иерархия классов и интерфейсов выглядит следующим образом:
Например, если вы разрабатываете класс CYourMiniportWaveRT, то, как видно на предыдущей схеме, CYourMiniportWaveRT должен реализовать все методы (как операции), определенные для двух родительских интерфейсов.
Шаблон скелета для такого класса будет содержать следующий код:
class CMiniportWaveRT :
public IMiniportWaveRT,
public IMiniportAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRT;
IMP_IMiniportAudioEngineNode;
...
};
Заголовочный файл Portcls.h определяет эти интерфейсы.
Работа с IMiniportStreamAudioEngineNode
Класс, который вы разрабатываете для работы со вторым интерфейсом , IMiniportStreamAudioEngineNode, также должен наследоваться от IMiniportWaveRTStreamNotification. Методы, определенные в IMiniportStreamAudioEngineNode, позволяют вашему драйверу использовать свойства KS для доступа к аудиодвижку через дескриптор экземпляра пина. Иерархия классов и интерфейсов выглядит следующим образом:
Например, если вы разрабатываете класс CYourMiniportWaveRTStream, то, как видно на предыдущей схеме, CYourMiniportWaveRTStream должен реализовать все методы, определенные для двух родительских интерфейсов.
Шаблон скелета для такого класса будет содержать следующий код:
class CMiniportWaveRTStream :
public IMiniportWaveRTStreamNotification,
public IMiniportStreamAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRTStream;
IMP_IMiniportWaveRTStreamNotification;
IMP_IMiniportStreamAudioEngineNode;
...
};
Файл заголовка Portcls.h определяет эти интерфейсы. Дополнительные сведения о том, как разработать драйвер, который может обрабатывать аппаратно разгруженные звуковые потоки, см. в статье "Реализация драйвера с аппаратной разгрузкой звука".