For a new piece of multimedia hardware, you must decide if you need both a new user-mode multimedia driver and a new kernel-mode multimedia driver. If a currently available user-mode driver allows applications to access all of the functionality provided by the new hardware, then you do not need to write a new user-mode driver. For example, the standard audio driver, mmdrv.dll, might provide all the necessary interfaces to access all the features of a new sound card. In this case, only a new kernel-mode driver is necessary. More typically, new hardware requires development of a new user-mode driver in order to handle the hardware’s unique configuration requirements. New user-mode drivers can be easily written by modifying sample drivers provided with this DDK.
New hardware almost always requires a new kernel-mode driver, because the kernel-mode driver contains information about a device’s registers and hardware buffers. Occasionally, a new user-mode driver is written that does not require support from a new kernel-mode driver. For example, the MCICDA CD audio driver uses the standard CD-ROM file system, so it does not require a unique underlying kernel-mode driver.
If your device can be connected to several different buses, you do not need a different kernel-mode driver for each bus. The Windows NT Hardware Abstraction Layer (HAL) insulates the kernel-mode driver from the bus. The Kernel-Mode Drivers Design Guide provides extensive general information about the design of kernel-mode drivers. Additionally, specific information about designing kernel-mode multimedia drivers is provided in the chapters discussing the multimedia driver types. The chapters are listed in Types of Multimedia Devices.