오프로드된 오디오 처리를 위한 Portcls 도우미 인터페이스
이 항목에서는 오프로드된 오디오 처리를 지원하는 드라이버의 구현을 간소화하기 위해 Microsoft가 PortCls(오디오 포트 클래스 드라이버)에 추가한 도우미 인터페이스를 제공합니다.
하드웨어 오프로드 오디오 스트림을 처리할 수 있는 오디오 어댑터와 함께 작동하는 WaveRT 미니포트 드라이버를 개발할 때 미니포트 드라이버는 PortCls와 함께 작동하여 오디오 데이터를 스트리밍 및/또는 처리합니다.
PortCls는 모든 오프로드 관련 KS(커널 스트리밍) 속성을 처리할 수 있으며, 이를 통해 하드웨어 오프로드 오디오 스트림 처리에 대한 지원을 노출하는 WaveRT 미니포트 드라이버를 간단하게 개발할 수 있습니다. 업데이트의 결과로 PortCls는 새로 정의된 두 인터페이스를 통해 하드웨어 및/또는 드라이버별 작업에 대한 기본 미니포트 드라이버만 호출합니다.
이러한 인터페이스를 사용하려면 각 인터페이스에 대해 하나씩 두 개의 클래스를 개발해야 합니다.
IMiniportAudioEngineNode 작업
IMiniportAudioEngineNode와 함께 작동하도록 개발하는 클래스도 IMiniportWaveRT에서 상속해야 합니다. IMiniportAudioEngineNode에 정의된 메서드를 사용하면 드라이버가 KS 필터 핸들을 통해 오디오 엔진에 액세스하는 KS 속성을 사용할 수 있습니다. 클래스/인터페이스 계층 구조는 다음과 같습니다.
예를 들어 CYourMiniportWaveRT라는 클래스를 개발하는 경우 앞의 다이어그램에서 볼 수 있듯이 CYourMiniportWaveRT는 두 부모 인터페이스에 대해 정의된 모든 메서드(Operations로 표시됨)를 구현해야 합니다.
이러한 클래스에 대한 골격 템플릿에는 다음 코드가 포함됩니다.
class CMiniportWaveRT :
public IMiniportWaveRT,
public IMiniportAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRT;
IMP_IMiniportAudioEngineNode;
...
};
Portcls.h 헤더 파일은 이러한 인터페이스를 정의합니다.
IMiniportStreamAudioEngineNode 작업
두 번째 인터페이스 IMiniportStreamAudioEngineNode와 함께 작동하도록 개발하는 클래스는 IMiniportWaveRTStreamNotification에서도 상속해야 합니다. IMiniportStreamAudioEngineNode에 정의된 메서드를 사용하면 드라이버가 핀 instance 핸들을 통해 오디오 엔진에 액세스하는 KS 속성을 사용할 수 있습니다. 클래스/인터페이스 계층 구조는 다음과 같습니다.
예를 들어 CYourMiniportWaveRTStream이라는 클래스를 개발하는 경우 이전 다이어그램에서 볼 수 있듯이 CYourMiniportWaveRTStream은 두 부모 인터페이스에 대해 정의된 모든 메서드를 구현해야 합니다.
이러한 클래스에 대한 골격 템플릿에는 다음 코드가 포함됩니다.
class CMiniportWaveRTStream :
public IMiniportWaveRTStreamNotification,
public IMiniportStreamAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRTStream;
IMP_IMiniportWaveRTStreamNotification;
IMP_IMiniportStreamAudioEngineNode;
...
};
Portcls.h 헤더 파일은 이러한 인터페이스를 정의합니다. 하드웨어 오프로드 오디오 스트림을 처리할 수 있는 드라이버를 개발하는 방법에 대한 자세한 내용은 하드웨어 오프로드 오디오 드라이버 구현을 참조하세요.