Supporting More Than One Wave Port Driver
Instead of developing a single wave miniport driver to run on all Windows operating systems, a hardware vendor might choose to write two or three miniport drivers and then pick the driver that is the most appropriate to run on the target system. During device installation and startup, the vendor has considerable flexibility in deciding which driver to use.
For example, a WaveRT miniport driver is typically the best choice for a computer that is running Windows Vista. By using decorated section names that designate specific platforms, the hardware vendor can write an INF file that installs the WaveRT miniport driver only if the computer is running Windows Vista. If the computer is running an earlier Windows operating system, such as Windows XP, the INF file will install a WavePci or WaveCyclic miniport driver instead.
For another example, assume that an audio device generates a 32-bit DMA address, performs scatter/gather DMA transfers, and resides on an audio adapter in a 64-bit system. The hardware vendor might provide both WavePci and WaveCyclic miniport drivers for the device. The adapter driver can decide which miniport driver to use at the time that the operating system tells it to start the device (in other words, when the operating system sends an IRP_MN_START_DEVICE request). If the adapter driver determines that it can access all of the physical memory in the system, it will create an instance of the WavePci miniport driver to control the device. If the device cannot access some portion of physical memory, the adapter driver will create an instance of the WaveCyclic miniport driver instead.