Метод IPortWaveCyclic::NewSlaveDmaChannel (portcls.h)

Метод NewSlaveDmaChannel создает новый экземпляр подчиненного канала DMA.

Синтаксис

NTSTATUS NewSlaveDmaChannel(
  [out] PDMACHANNELSLAVE *DmaChannel,
  [in]  PUNKNOWN         OuterUnknown,
  [in]  PRESOURCELIST    ResourceList,
  [in]  ULONG            DmaIndex,
  [in]  ULONG            MaximumLength,
  [in]  BOOLEAN          DemandMode,
  [in]  DMA_SPEED        DmaSpeed
);

Параметры

[out] DmaChannel

Указатель на переменную указателя, выделенную вызывающим объектом, в которую метод записывает указатель на интерфейс IDmaChannelSlave нового объекта DMA-канала. Укажите допустимое значение указателя, отличное от NULL , для этого параметра.

[in] OuterUnknown

Указатель на интерфейс IUnknown объекта, который должен агрегировать объект DMA-канала. Этот параметр является необязательным. Если агрегирование не требуется, укажите этот параметр как NULL.

[in] ResourceList

Указатель на объект IResourceList . Этот список ресурсов содержит ресурс, описывающий канал DMA.

[in] DmaIndex

Индекс в списке ресурсов дескриптора DMA-канала. Функция использует это значение в качестве параметра вызова метода IResourceList объекта ResourceList ::FindxxxEntry.

[in] MaximumLength

Максимальная длина в байтах буфера циклического DMA, который будет связан с этим каналом.

[in] DemandMode

Указывает, поддерживает ли устройство, связанное с каналом DMA, режим спроса.

[in] DmaSpeed

Скорость DMA можно указать как одно из следующих значений перечисления DMA_SPEED: Compatible, TypeA, TypeB, TypeC или TypeF.

Возвращаемое значение

NewSlaveDmaChannel возвращает STATUS_SUCCESS, если вызов был выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.

Комментарии

Примечание

Корпорация Майкрософт поддерживает разнообразную и инклюзивную среду. В этой статье содержатся ссылки на терминологию, которую руководство Майкрософт по общениям без предвзятости распознает как исключающую. Слово или фраза используется в этой статье для обеспечения согласованности, так как они в настоящее время отображаются в программном обеспечении. При обновлении программного обеспечения для удаления языка эта статья будет обновлена, чтобы она была в соответствии.

Параметры MaximumLength, DemandMode и DmaSpeed по смыслу похожи на члены структуры DEVICE_DESCRIPTION с одинаковыми именами.

Устройство WaveCyclic, которое не имеет возможностей оборудования DMA, называется подчиненным устройством. В отличие от этого, устройство master имеет встроенное оборудование DMA для шины. Подчиненное устройство должно полагаться на системный контроллер DMA для выполнения всех необходимых передач данных. Метод NewSlaveDmaChannel создает объект канала DMA для подчиненного устройства. Чтобы создать объект канала DMA для master устройства, вызовите вместо него метод IPortWaveCyclic::NewMasterDmaChannel. Пример аудиодрайвера sb16 в комплекте драйверов Microsoft Windows (WDK) является примером драйвера miniport WaveCyclic для подчиненного устройства. Дополнительные сведения о master и подчиненных устройствах см. в разделах IDmaChannel и IDmaChannelSlave.

Параметры DmaChannel, OuterUnknown и ResourceList следуют соглашениям о подсчете ссылок для COM-объектов.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть portcls.h (включая Portcls.h)
IRQL PASSIVE_LEVEL

См. также раздел

DEVICE_DESCRIPTION

IDmaChannel

IDmaChannelSlave

IPortWaveCyclic

IPortWaveCyclic::NewMasterDmaChannel

IResourceList