DMus 미니포트 드라이버

DMus 미니포트 드라이버는 고급 MIDI 디바이스의 하드웨어 종속 기능을 관리합니다. 이러한 디바이스는 정밀 시퀀서 타이밍, DLS(다운로드 가능한 소리) 및 채널 그룹과 같은 DirectMusic 기능을 지원합니다. DMus 미니포트 드라이버는 MPU-401과 같은 디바이스를 사용하여 고성능을 달성할 수 있습니다. 하드웨어의 기능에 따라 미니포트 드라이버 또는 포트 드라이버에서 타이밍을 처리할 수 있습니다. DMus 미니포트 드라이버는 웨이브 출력 스트림을 생성하는 소프트웨어 신시사이저를 지원할 수도 있습니다.

MIDI 하드웨어 디바이스용 DMus 미니포트 드라이버는 다음 두 인터페이스를 지원해야 합니다.

  • 미니포트 인터페이스는 미니포트 개체를 초기화하고 MIDI 스트림을 만듭니다.

  • 스트림 인터페이스는 MIDI 스트림을 관리하고 대부분의 미니포트 드라이버 기능을 노출합니다.

미니포트 인터페이스인 IMiniportDMusIMiniport 인터페이스의 메서드를 상속합니다. IMiniportDMus 는 다음과 같은 추가 메서드를 제공합니다.

IMiniportDMus::Init

미니포트 개체를 초기화합니다.

IMiniportDMus::NewStream

새 스트림 개체를 만듭니다.

IMiniportDMus::Service

미니포트 드라이버에 서비스 요청을 알 수 있습니다.

스트림 인터페이스 IMXFIUnknown 인터페이스의 메서드를 상속합니다. IMXF 는 다음과 같은 추가 메서드를 제공합니다.

IMXF::ConnectOutput

데이터 원본인 이 스트림 개체를 데이터 싱크인 다른 스트림 개체의 IMXF 인터페이스에 연결합니다.

IMXF::D isconnectOutput

데이터 싱크인 다른 스트림 개체의 IMXF 인터페이스에서 이 스트림 개체의 연결을 끊습니다.

IMXF::P utMessage

DMUS_KERNEL_EVENT 구조를 데이터 싱크에 전달합니다.

IMXF::SetState

스트림의 상태를 설정합니다.

또한 DMus 미니포트 드라이버의 ISynthSinkDMus 인터페이스는 소프트웨어 신시사이저에 대한 DLS 기능을 제공합니다. ISynthSinkDMus는 기본 인터페이스 IMXF의 메서드를 상속합니다. ISynthSinkDMus 는 다음과 같은 추가 메서드를 제공합니다.

ISynthSinkDMus::RefTimeToSample

참조 시간을 샘플 시간으로 변환합니다.

ISynthSinkDMus::Render

웨이브 데이터를 웨이브 싱크의 버퍼로 렌더링합니다.

ISynthSinkDMus::SampleToRefTime

샘플 시간을 참조 시간으로 변환합니다.

ISynthSinkDMus::SyncToMaster

샘플 클록을 master 클록과 동기화합니다.

포트 드라이버의 웨이브 싱크는 ISynthSinkDMus::Render 를 호출하여 Synthesizer가 MIDI 입력 스트림에서 생성하는 웨이브 PCM 데이터를 읽습니다. 웨이브 싱크에 대한 자세한 내용은 Kernel-Mode 소프트웨어 신시사이저용 웨이브 싱크를 참조하세요.

미니포트 드라이버는 DMus 포트 드라이버에서 다음 인터페이스를 호출합니다.

IPortDMus

IAllocatorMXF

IMasterClock

PortCls에는 UART 함수가 있는 MIDI 디바이스에 대한 기본 제공 DMus 미니포트 드라이버가 포함되어 있습니다. 자세한 내용은 PcNewMiniport를 참조하세요.