Метод 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 |