All MIDI transport in the DirectMusic port and miniport driver is carried out using the same interface: IMXF.
IMXF is the COM interface for a DirectMusic MIDI transform filter. The miniport driver, the sequencer, and other entities in the port driver that handle MIDI data use IMXF as their common COM interface. When the miniport driver implements this interface, it can participate in MIDI transport. IPortDMus, which resides in PortCls, manages IMXF. The interface from the capture device to capture sink is also an IMXF interface.
MIDI data is transported between user mode and kernel mode in buffers of packed time-stamped data. The kernel port driver breaks these buffers into individual events (see DMUS_KERNEL_EVENT). The high-resolution MIDI sequencer passes these events to the miniport driver when the trigger time occurs.
On the input side, the kernel port driver extracts individual input messages from the miniport driver and builds packed buffers to pass up to user mode. Accordingly, the data transport model for DirectMusic miniport drivers consists of IMXF::PutMessage and IAllocatorMXF::GetMessage.
The IMXF interface supports the following methods:
The IAllocatorMXF interface extends IMXF by adding the following methods:
For more information about the use of these interfaces, see Allocator.