Windows 2000 Device Interface Limits

In Windows 2000, the Windows multimedia functions allow a maximum of 10 device interfaces on each of the following APIs: waveIn, waveOut, midiIn, midiOut, mixer, and aux. For example, an application can create up to 10 device interfaces for waveIn devices and another 10 for waveOut devices.

In Microsoft Windows Server 2003 and Windows XP, the limit on the number of device interfaces per API is increased from 10 to 32.

These limits do not apply to Windows Vista and later or to Windows Me/98, which allow applications to create arbitrary numbers of device interfaces.

A device interface uniquely identifies each subsystem driver. For example, a device that ships with two subsystem drivers--one for Sound Blaster and one for USB--requires two device interfaces.

The limitation on the number of device interfaces does not limit the number of devices. A subsystem driver that manages several devices (four MIDI devices, for instance) still requires only a single device interface.


For example, an adapter driver might expose the following device interfaces:

Device interface 1: wave

Device interface 2: UART

Device interface 3: wavetable

Assume that these three device interfaces expose the following devices:

  • Device interface 1 (wave)

    1 waveOut device

    1 waveIn device

    1 midiOut device (software synthesizer)

    1 mixer device

    1 aux device

  • Device interface 2 (UART)

    1 midiOut device (MPU-401)

    1 midiIn device (MPU-401)

    (0 for all other device types)

  • Device interface 3 (wavetable)

    1 midiOut device (wavetable synthesizer)

    (0 for all other device types)

The following table summarizes the number of device interfaces per device type.

Device TypeNumber of Device Interfaces














If a Windows 2000 system contains four of these adapters, the total number of midiOut device interfaces is 4x3 = 12. Windows installs only 10 of the 12 midiOut device interfaces for use by its multimedia functions. If an application calls midiOutGetNumDevs, the call returns 10 rather than 12.



Send comments about this topic to Microsoft