IDmaChannel interface provides an abstraction of a DMA channel and its associated DMA buffer and usage parameters. In Windows 98/Me and in Windows 2000 and later, a WaveCyclic or WavePci port driver implements this interface and exposes it to the WaveCyclic or WavePci miniport driver. The miniport driver obtains a reference to the port driver's implementation of an
IDmaChannel object by calling one of the port driver's NewXxxDmaChannel methods:
A miniport driver can also implement its own
IDmaChannel interface if it requires capabilities that are not in the port driver's default implementation. For more information about this, see Wave Filters. When the port driver calls the miniport driver's NewStream method (for example, IMiniportWaveCyclic::NewStream), the method outputs the miniport driver's
IDmaChannel object to the port driver.
IDmaChannel inherits from the IUnknown interface.
The current implementation of the
IDmaChannel interface in Portcls.sys is not multithread-safe because it does not internally synchronize access to shared data. Typically, a single driver thread calls the methods of an
IDmaChannel object. In this case, there is no risk of two method calls simultaneously accessing the same data. However, if multiple threads can potentially call the methods of an
IDmaChannel object at the same time, the driver writer must synchronize the method calls to prevent internal data corruption.
For more information, see DMA Channel Objects.
In addition to the methods that
IDmaChannel inherits from the IUnknown interface,
IDmaChannel supports the following methods: