DMus 포트 드라이버

DMus 포트 드라이버는 Microsoft DirectMusic 신시사이저 또는 캡처 디바이스를 관리합니다. 간단한 MIDI 디바이스만 지원하는 MIDI 포트 드라이버와 달리 DMus 포트 드라이버는 정밀 시퀀서 타이밍, 다운로드 가능한 소리(DLS) 및 채널 그룹과 같은 고급 MIDI 기능이 있는 디바이스를 지원합니다. 어댑터 드라이버는 MIDI 스트림을 렌더링하거나 캡처할 수 있는 DirectMusic 필터(MIDI 및 DirectMusic 필터 참조)를 형성하기 위해 DMus 포트 드라이버에 바인딩하는 해당 DMus 미니포트 드라이버를 구현합니다.

DMus 포트 드라이버는 IPortDMus 인터페이스를 미니포트 드라이버에 노출합니다. IPortDMus는 기본 인터페이스 IPort의 메서드를 상속합니다. IPortDMus 는 다음과 같은 추가 메서드를 제공합니다.

IPortDMus::Notify

MIDI 신시사이저 또는 캡처 디바이스가 MIDI 스트림의 새 위치로 발전했음을 포트 드라이버에 알린다.

IPortDMus::RegisterServiceGroup

포트 드라이버에 서비스 그룹 개체를 등록합니다. 등록된 서비스 그룹에는 미니포트 드라이버가 Notify를 호출할 때 포트 드라이버에서 호출하는 하나 이상의 서비스 루틴 목록이 포함됩니다. 자세한 내용은 서비스 싱크 및 서비스 그룹 개체를 참조하세요.

또한 DMus 포트 드라이버는 각 스트림에 대한 메모리 할당자를 만들고 할당자의 IAllocatorMXF 인터페이스를 미니포트 드라이버의 스트림 개체에 노출합니다. IAllocatorMXF 는 기본 인터페이스 IMXF의 메서드를 상속합니다. IAllocatorMXF 는 다음과 같은 추가 메서드를 제공합니다.

IAllocatorMXF::GetBuffer

MIDI 이벤트 또는 너무 커서 DMUS_KERNEL_EVENT 구조에 맞지 않는 이벤트 목록에 대한 버퍼를 가져옵니다.

IAllocatorMXF::GetBufferSize

GetBuffer 메서드에서 검색한 버퍼의 크기(바이트)를 가져옵니다.

IAllocatorMXF::GetMessage

DMUS_KERNEL_EVENT 형식의 단일 구조에 대한 스토리지가 포함된 메시지 버퍼를 가져옵니다.

IAllocatorMXF::P utBuffer

사용되지 않습니다. DMus 포트 및 미니포트 드라이버 개체는 해당 IPortDMusIMiniportMidi 인터페이스를 통해 서로 통신합니다. 또한 포트 드라이버는 IMXF 인터페이스를 통해 미니포트 드라이버의 스트림 개체와 통신하고 미니포트 드라이버의 스트림 개체는 IAllocatorMXF 인터페이스를 통해 포트 드라이버의 할당자와 통신합니다.

DirectMusic에 대한 드라이버 지원에 대한 자세한 내용은 신시사이저 미니포트 드라이버 개요를 참조하세요.

Windows XP 이상에서는 IPortDMusIPortMidi 인터페이스가 모두 단일 내부 드라이버 모듈에서 구현됩니다. 이러한 통합은 이러한 두 인터페이스의 유사성에 의해 촉진됩니다. 예를 들어 두 인터페이스에 대해 동일한 메서드가 정의됩니다. 이전 버전의 Windows용으로 작성된 애플리케이션은 MIDI 및 DMus 포트 드라이버의 통합으로 인해 IPortMidiIPortDMus 인터페이스의 동작이 변경되지 않아야 합니다.