Compartilhar via


Interfaces auxiliares portcls para processamento de áudio descarregado

Este tópico apresenta as interfaces auxiliares que a Microsoft adicionou ao seu driver de classe de porta de áudio (PortCls), para simplificar a implementação de drivers que dão suporte ao processamento de áudio descarregado.

Quando você desenvolve o driver de miniporta WaveRT que funcionará com um adaptador de áudio capaz de processar fluxos de áudio descarregados por hardware, o driver de miniporto funciona com PortCls para transmitir e/ou processar dados de áudio.

PortCls pode lidar com todas as propriedades de KS (streaming de kernel) relacionadas ao descarregamento e é isso que simplifica o desenvolvimento de um driver de miniporto WaveRT para expor o suporte ao processamento de fluxos de áudio descarregados por hardware. Como resultado das atualizações, PortCls chama apenas o driver de miniporto subjacente para operações específicas de hardware e/ou driver por meio de duas interfaces recém-definidas:

Você deve desenvolver duas classes para trabalhar com essas interfaces, uma para cada interface.

Trabalhando com IMiniportAudioEngineNode

A classe que você desenvolve para trabalhar com IMiniportAudioEngineNode também deve herdar de IMiniportWaveRT. Os métodos definidos em IMiniportAudioEngineNode permitem que o driver use propriedades KS que acessam o mecanismo de áudio por meio de um identificador de filtro KS. A hierarquia de classe/interface é a seguinte:

Diagrama mostrando a classe de miniporto WaveRT personalizada herdando de IMiniportWaveRT e IMiniportAudioEngineNode.

Portanto, se, por exemplo, você desenvolver uma classe chamada CYourMiniportWaveRT, como você pode ver no diagrama anterior, CYourMiniportWaveRT deverá implementar todos os métodos (mostrados como Operações) definidos para as duas interfaces pai.

Um modelo esquelético para essa classe conteria o seguinte código:

class CMiniportWaveRT : 
    public IMiniportWaveRT,
    public IMiniportAudioEngineNode,
    public CUnknown
{
...

    IMP_IMiniportWaveRT;
    IMP_IMiniportAudioEngineNode;
...

};

O arquivo de cabeçalho Portcls.h define essas interfaces.

Trabalhando com IMiniportStreamAudioEngineNode

A classe que você desenvolve para trabalhar com a segunda interface, IMiniportStreamAudioEngineNode, também deve herdar de IMiniportWaveRTStreamNotification. Os métodos definidos em IMiniportStreamAudioEngineNode permitem que o driver use propriedades KS que acessam o mecanismo de áudio por meio de um identificador de instância de pino. A hierarquia de classe/interface é a seguinte:

Diagrama mostrando a classe de miniporto de fluxo WaveRT personalizada herdando de IMiniportWaveRTStreamNotification e IMiniportStreamAudioEngineNode.

Portanto, se, por exemplo, você desenvolver uma classe chamada CYourMiniportWaveRTStream, como você pode ver no diagrama anterior, CYourMiniportWaveRTStream deverá implementar todos os métodos definidos para as duas interfaces pai.

Um modelo esquelético para essa classe conteria o seguinte código:

class CMiniportWaveRTStream : 
    public IMiniportWaveRTStreamNotification,
    public IMiniportStreamAudioEngineNode,
    public CUnknown
{
...
    IMP_IMiniportWaveRTStream;
    IMP_IMiniportWaveRTStreamNotification;
    IMP_IMiniportStreamAudioEngineNode;
...

};

O arquivo de cabeçalho Portcls.h define essas interfaces. E para obter mais informações sobre como desenvolver um driver que possa lidar com fluxos de áudio descarregados por hardware, consulte Implementação do driver de áudio descarregado por hardware.