오프로드된 오디오 처리를 위한 Portcls 도우미 인터페이스

이 항목에서는 오프로드된 오디오 처리를 지원하는 드라이버의 구현을 간소화하기 위해 Microsoft가 PortCls(오디오 포트 클래스 드라이버)에 추가한 도우미 인터페이스를 제공합니다.

하드웨어 오프로드 오디오 스트림을 처리할 수 있는 오디오 어댑터와 함께 작동하는 WaveRT 미니포트 드라이버를 개발할 때 미니포트 드라이버는 PortCls와 함께 작동하여 오디오 데이터를 스트리밍 및/또는 처리합니다.

PortCls는 모든 오프로드 관련 KS(커널 스트리밍) 속성을 처리할 수 있으며, 이를 통해 하드웨어 오프로드 오디오 스트림 처리에 대한 지원을 노출하는 WaveRT 미니포트 드라이버를 간단하게 개발할 수 있습니다. 업데이트의 결과로 PortCls는 새로 정의된 두 인터페이스를 통해 하드웨어 및/또는 드라이버별 작업에 대한 기본 미니포트 드라이버만 호출합니다.

이러한 인터페이스를 사용하려면 각 인터페이스에 대해 하나씩 두 개의 클래스를 개발해야 합니다.

IMiniportAudioEngineNode 작업

IMiniportAudioEngineNode와 함께 작동하도록 개발하는 클래스도 IMiniportWaveRT에서 상속해야 합니다. IMiniportAudioEngineNode에 정의된 메서드를 사용하면 드라이버가 KS 필터 핸들을 통해 오디오 엔진에 액세스하는 KS 속성을 사용할 수 있습니다. 클래스/인터페이스 계층 구조는 다음과 같습니다.

IMiniportWaveRT 및 IMiniportAudioEngineNode에서 상속되는 사용자 지정 WaveRT 미니포트 클래스를 보여 주는 다이어그램

예를 들어 CYourMiniportWaveRT라는 클래스를 개발하는 경우 앞의 다이어그램에서 볼 수 있듯이 CYourMiniportWaveRT는 두 부모 인터페이스에 대해 정의된 모든 메서드(Operations로 표시됨)를 구현해야 합니다.

이러한 클래스에 대한 골격 템플릿에는 다음 코드가 포함됩니다.

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

    IMP_IMiniportWaveRT;
    IMP_IMiniportAudioEngineNode;
...

};

Portcls.h 헤더 파일은 이러한 인터페이스를 정의합니다.

IMiniportStreamAudioEngineNode 작업

두 번째 인터페이스 IMiniportStreamAudioEngineNode와 함께 작동하도록 개발하는 클래스는 IMiniportWaveRTStreamNotification에서도 상속해야 합니다. IMiniportStreamAudioEngineNode에 정의된 메서드를 사용하면 드라이버가 핀 instance 핸들을 통해 오디오 엔진에 액세스하는 KS 속성을 사용할 수 있습니다. 클래스/인터페이스 계층 구조는 다음과 같습니다.

IMiniportWaveRTStreamNotification 및 IMiniportStreamAudioEngineNode에서 상속되는 사용자 지정 WaveRT 스트림 미니포트 클래스를 보여 주는 다이어그램

예를 들어 CYourMiniportWaveRTStream이라는 클래스를 개발하는 경우 이전 다이어그램에서 볼 수 있듯이 CYourMiniportWaveRTStream은 두 부모 인터페이스에 대해 정의된 모든 메서드를 구현해야 합니다.

이러한 클래스에 대한 골격 템플릿에는 다음 코드가 포함됩니다.

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

};

Portcls.h 헤더 파일은 이러한 인터페이스를 정의합니다. 하드웨어 오프로드 오디오 스트림을 처리할 수 있는 드라이버를 개발하는 방법에 대한 자세한 내용은 하드웨어 오프로드 오디오 드라이버 구현을 참조하세요.