ACX 오디오 클래스 확장 개요

이 항목에서는 ACX 오디오 클래스 확장에 대한 개략적인 요약을 제공합니다.

ACX 프레임워크는 Windows 드라이버 프레임워크를 기반으로 빌드됩니다.

오디오 드라이버를 보다 안정적으로 제공하고 PC 사용자에게 최상의 환경을 제공하기 위해 ACX(오디오 클래스 eXtension)를 초기 미리 보기에서 사용할 수 있습니다. ACX는 오디오 도메인에 대한 새 WDF(Windows 드라이버 프레임워크) 클래스 확장을 정의합니다. WDF에 대한 자세한 내용은 프레임워크 개체 소개를 참조하세요. WDF IO 대상과 같은 많은 WDF 개념은 ACX에서 사용할 수 있습니다. WDF IO 대상에 대한 자세한 내용은 I/O 대상 소개를 참조하세요.

ACX는 스트리밍하는 동안 사용자 모드에서 커널 모드로 여러 번 전환하는 작업과 관련된 대기 시간을 방지하기 위해 UMDF(사용자 모드 드라이버 프레임워크)가 아닌 KMDF(커널 모드 드라이버 프레임워크)를 사용하여 빌드됩니다. 현재 레거시 모델인 Portcls 오디오 드라이버는 WDM, 커널 모드 기반 드라이버입니다.

ACX 프레임워크를 사용하면 '기본 제공' 작동하는 오디오 드라이버를 쉽게 만들 수 있습니다. 예를 들어 ACX는 대부분의 설정에 대한 기본 완성을 지원합니다. 이렇게 하면 드라이버가 올바른 설정을 더 쉽게 사용할 수 있지만 여전히 사용자 지정이 허용됩니다.

ACX 프레임워크는 오디오 개념을 드라이버가 상호 작용할 수 있는 WDF 개체(스트림, 형식 등)로 노출합니다. 이를 통해 일관된 프로그래밍 환경을 제공하고 더 큰 오디오 드라이버 개발자 커뮤니티를 사용할 수 있습니다.

참고

ACX 헤더 및 라이브러리는 WDK 10.0.22621.2428(2023년 10월 24일 릴리스)에 포함되지 않지만 이전 버전과 WDK의 최신(25000 시리즈 빌드) Insider Preview에서 사용할 수 있습니다. WDK의 미리 보기 버전에 대한 자세한 내용은 WDK(Windows 드라이버 키트)의 미리 보기 버전 설치를 참조하세요.

ACX 목표

ACX(오디오 클래스 확장)에는 다음과 같은 목표가 있습니다.

  • 간단한 독립 실행형 오디오 드라이버를 개발하는 데 필요한 노력과 노 알고 있는 방법을 간소화합니다.
  • 타사에서 개발해야 하는 코드 양을 줄입니다. 코드 줄이 적으면 유지 관리가 줄어들고 디버깅이 더 쉬워집니다.
  • 기존 상위 사용자 모드 클라이언트(서비스 및 앱)를 있는 그대로 실행할 수 있습니다.
  • 오디오 스택 드라이버의 전원 pnp 관리를 간소화합니다.
  • 전체 성능에 영향을 주지 않습니다. 즉, 추가/눈에 띄는 대기 시간이 없습니다.
  • 다중 스택 오디오 드라이버를 개발하는 데 필요한 노력을 간소화합니다.
  • 타사 드라이버가 스트리밍할 때 사용할 잠금 메커니즘을 지정할 수 있도록 허용합니다.
  • 드라이버/API 모듈을 자체 포함하고 재사용할 수 있도록 하는 Microsoft 구성 요소 배포 격리 솔루션을 사용합니다.

ACX 아키텍처

이 다이어그램은 커널 모드의 기존 사용자 모드 앱 및 ACX 개체와 스택 하단의 오디오 하드웨어를 보여 주는 ACX 아키텍처를 보여 줍니다. 드라이버 개발자는 ACX 개체 외에도 WDF 개체에 액세스하여 드라이버 코드(예: 전원 관리)를 활용할 수 있습니다.

커널 모드의 WDF 및 ACX 개체가 있는 사용자 및 커널 모드와 스택 아래쪽의 오디오 하드웨어를 보여 주는 ACX 아키텍처를 보여 주는 다이어그램

기존 오디오 드라이버와 ACX 공존

ACX는 새로운 ACX 드라이버로 유연하게 마이그레이션할 수 있도록 기존 오디오 드라이버와 공존하도록 설계되었습니다.

  • 기존 레거시 Windows 클래스 드라이버에서 종료, 변경되지 않은(WDM 기반) 오디오 미니포트 드라이버의 이진 호환성을 유지 관리합니다.
  • 현재 ACX에서 WaveRT 기반 스트리밍만 지원됩니다.
  • 레거시 PortCls/Ks 및 새 ACX 스택은 나란히 실행됩니다. ACX를 사용하면 타사가 현재 오디오 드라이버를 새 모델로 이식하도록 강제하지 않습니다. 모델이 많은 이점을 제공하므로 타사에서 향후 오디오 개발에 자발적으로 사용하도록 선택할 수 있습니다.

ACX 일반 정의

회로 - 부분 또는 전체 오디오 경로를 나타내는 드라이버 구성 요소입니다. 회로는 기존 엔드포인트 및 해당 기능을 나타냅니다.

Stream - 회로에서 만든 오디오 스트림을 나타내기 위해 만든 드라이버 구성 요소입니다. Stream은 부모 회로의 요소를 기반으로 만든 요소 목록으로 구성됩니다.

Stream Circuit - 상위 사용자 모드 스트리밍 서비스와 직접 인터페이스하는 다중 스택 아키텍처(부분 오디오 경로)의 회로입니다.

코어 회로 - 오디오 엔드포인트 디바이스의 ID를 제공하는 다중 스택 아키텍처(부분 오디오 경로)의 회로입니다.

요소 - 밑줄 하드웨어의 오디오 기능을 나타내는 회로 또는 스트림의 하위 구성 요소입니다. Volume 또는 Mute 또는 Jack 요소 또는 DSP 회로의 Module 요소 등이 될 수 있습니다.

엔드포인트 오디오 경로 - 단일 오디오 엔드포인트를 나타내기 위해 함께 연결된 단일 또는 회로 개체 그룹입니다. 회로 개체는 동일하거나 다른 드라이버에 속하는 다른 디바이스 스택에서 와야 합니다.

ACX 개체 요약

기본 ACX 개체에 대한 요약은 ACX 개체 요약을 참조하세요.

샘플 ACX 드라이버

간단한 ACX 샘플 드라이버는 개발 분기인 https://github.com/microsoft/Windows-driver-samples/tree/develop/audio/Acx/Samples의 GitHub에서 보고 다운로드할 수 있습니다.

드라이버 검증 도구

ACX 드라이버를 비롯한 모든 Windows 드라이버에 드라이버 검증 도구를 사용하는 것이 좋습니다. 드라이버 검증 도구를 사용하여 대기 오류를 표시하고, 전력 소비를 줄이고, 드라이버의 안정성을 높입니다. 자세한 내용은 드라이버 검증 도구를 참조하세요.

ACX 다중 스택 드라이버 표준화된 교차 통신

오디오 경로는 다양한 드라이버 스택에서 처리하는 여러 하드웨어 구성 요소를 통해 완전한 오디오 환경을 만드는 것이 일반적입니다. 시스템에서 다양한 오디오 기술 공급업체에서 DSP, CODEC 및 AMP 기능을 구현하는 것이 일반적입니다.

잘 정의된 표준이 없는 다중 스택 아키텍처에서 각 공급업체는 고유한 독점 인터페이스 및 통신 프로토콜을 정의해야 합니다. ACX는 이러한 스택 간의 동기화 소유권을 가져오고 드라이버가 서로 통신할 수 있는 간단한 재사용 가능한 패턴을 제공하여 다중 스택 오디오 드라이버의 개발을 용이하게 하는 것을 목표로 합니다.

자세한 내용은 ACX 다중 스택 드라이버 간 통신을 참조하세요.

ACX 참조 설명서

헤더 수준 ACX 참조 설명서에 대한 자세한 내용은 ACX 참조 설명서를 참조하세요.

추가 정보

ACX 개체 요약

ACX 참조 설명서

ACX 버전 정보

ACX 로깅 및 디버깅

ACX 대상 및 드라이버 동기화

ACX IO 요청 패킷 IRP

ACX 디바이스 열거형

ACX 전원 관리

ACX 다중 스택 드라이버 간 통신

ACX 스트리밍