The NewSlaveDmaChannel method creates a new instance of a slave DMA channel.
NTSTATUS
NewSlaveDmaChannel(
OUT PDMACHANNELSLAVE *DmaChannel,
IN PUNKNOWN OuterUnknown,
IN PRESOURCELIST ResourceList OPTIONAL,
IN ULONG DmaIndex,
IN ULONG MaximumLength,
IN BOOL DemandMode,
IN DMA_SPEED DmaSpeed
);
NewSlaveDmaChannel returns STATUS_SUCCESS if the call was successful. Otherwise, the method returns an appropriate error code.
Declared in portcls.h. Include portcls.h.
Parameters MaximumLength, DemandMode, and DmaSpeed are similar in meaning to the members of the DEVICE_DESCRIPTION structure with the same names.
A WaveCyclic device that lacks DMA-hardware capabilities is referred to as a slave device. In contrast, a master device has built-in bus-mastering DMA hardware. A slave device has to rely on the system DMA controller to perform any data transfers that it requires. The NewSlaveDmaChannel method creates a DMA-channel object for a slave device. To create a DMA-channel object for a master device, call the IPortWaveCyclic::NewMasterDmaChannel method instead. The sb16 sample driver in the Windows DDK is an example of a WaveCyclic miniport driver for a slave device. For more information about master and slave devices, see IDmaChannel and IDmaChannelSlave.
The DmaChannel, OuterUnknown, and ResourceList parameters follow the reference-counting conventions for COM objects.
Callers of NewSlaveDmaChannel must run at IRQL PASSIVE_LEVEL.
IPortWaveCyclic::NewMasterDmaChannel, IDmaChannel, IDmaChannelSlave, IResourceList, DEVICE_DESCRIPTION