IPortWaveCyclic::NewMasterDmaChannel method

The NewMasterDmaChannel method creates a new instance of a bus-master DMA channel.

Syntax


NTSTATUS NewMasterDmaChannel(
  [out]           PDMACHANNEL *DmaChannel,
  [in]            PUNKNOWN OuterUnknown,
  [in, optional]  PRESOURCELIST ResourceList,
  [in]            ULONG MaximumLength,
  [in]            BOOLEAN Dma32BitAddresses,
  [in]            BOOLEAN Dma64BitAddresses,
  [in]            DMA_WIDTH DmaWidth,
  [in]            DMA_SPEED DmaSpeed
);

Parameters

DmaChannel [out]

Pointer to a caller-allocated pointer variable into which the method writes a pointer to the new IDmaChannel object. Specify a valid, non-NULL pointer value for this parameter.

OuterUnknown [in]

Pointer to the IUnknown interface of an object that needs to aggregate the DMA-channel object. This parameter is optional. If aggregation is not required, specify this parameter as NULL.

ResourceList [in, optional]

Pointer to the miniport driver's resource list, which is an IResourceList object. This parameter is optional and can be specified as NULL. The NewMasterDmaChannel method currently makes no use of this parameter.

MaximumLength [in]

Maximum length in bytes of the cyclic DMA buffer that will be associated with this channel.

Dma32BitAddresses [in]

Specifies the use of 32-bit addresses.

Dma64BitAddresses [in]

Specifies the use of 64-bit addresses.

DmaWidth [in]

Not used. Set to (DMA_WIDTH)(-1).

DmaSpeed [in]

Not used. Set to (DMA_SPEED)(-1).

Return value

NewMasterDmaChannel returns STATUS_SUCCESS if the call was successful. Otherwise, the method returns an appropriate error code.

Remarks

Parameters MaximumLength, Dma32BitAddresses, Dma64BitAddresses, DmaWidth, and DmaSpeed are similar in meaning to the members of the DEVICE_DESCRIPTION structure with the same names.

A WaveCyclic device with built-in bus-mastering DMA hardware is referred to as a master device. In contrast, a subordinate device lacks DMA hardware and has to rely on the system DMA controller to perform any data transfers that it requires. The NewMasterDmaChannel method creates a DMA-channel object for a master device. To create a DMA-channel object for a subordinate device, call the IPortWaveCyclic::NewSlaveDmaChannel method instead. For more information about master and subordinate devices, see IDmaChannel and IDmaChannelSlave.

The DmaChannel, OuterUnknown, and ResourceList parameters follow the reference-counting conventions for COM objects.

Requirements

Header

Portcls.h (include Portcls.h)

IRQL

PASSIVE_LEVEL

See also

IPortWaveCyclic::NewSlaveDmaChannel
IDmaChannel
IDmaChannelSlave
IResourceList
DEVICE_DESCRIPTION

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft