Поделиться через


Интерфейс IDmaChannel (portcls.h)

Интерфейс IDmaChannel предоставляет абстракцию канала DMA и связанные с ним параметры буфера DMA и параметров использования. Драйвер порта WaveCyclic или WavePci реализует этот интерфейс и предоставляет его драйверу мини-порта WaveCyclic или WavePci. Драйвер минипорта получает ссылку на реализацию драйвера порта объекта IDmaChannel путем вызова одного из методов новогоxxx драйвера портаDmaChannel:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Мини-драйвер также может реализовать собственный интерфейс IDmaChannel, если он требует возможностей, которые не находятся в реализации драйвера порта по умолчанию. Дополнительные сведения об этом см. в фильтрах волн. Когда драйвер порта вызывает метод драйвера miniport NewStream (например, IMiniportWaveCyclic::NewStream), метод выводит объект IDmaChannel драйвера минипорта в драйвер порта. IDmaChannel наследует от интерфейса IUnknown.

Текущая реализация интерфейса IDmaChannel в Portcls.sys не является многопоточности безопасной, так как она не синхронизирует доступ к общим данным. Как правило, один поток драйвера вызывает методы объекта IDmaChannel. В этом случае нет риска одновременного доступа к тем же данным двух вызовов метода. Однако если несколько потоков потенциально могут вызывать методы объекта IDmaChannel одновременно, средство записи драйверов должно синхронизировать вызовы метода, чтобы предотвратить повреждение внутренних данных.

Дополнительные сведения см. в объектах канала DMA.

Заметка

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

Наследство

Интерфейс IDmaChannel наследует от интерфейса IUnknown.

Методика

Интерфейс IDmaChannel имеет эти методы.

 
IDmaChannel::AllocateBuffer

Метод AllocateBuffer выделяет общий буфер, к которому можно получить доступ с помощью драйвера портов и оборудования DMA.
IDmaChannel::AllocatedBufferSize

Метод AllocatedBufferSize возвращает размер выделенного буфера.
IDmaChannel::BufferSize

Метод BufferSize возвращает размер в байтах буфера данных канала DMA.
IDmaChannel::CopyFrom

Метод CopyFrom копирует образец данных из общего буфера канала DMA в указанный целевой буфер.
IDmaChannel::CopyTo

Метод CopyTo копирует образец данных в общий буфер канала DMA из указанного исходного буфера.
IDmaChannel::FreeBuffer

Метод FreeBuffer освобождает буфер, выделенный предыдущим вызовом IDmaChannel::AllocateBuffer.
IDmaChannel::GetAdapterObject

Метод GetAdapterObject возвращает объект аппаратного адаптера канала DMA.
IDmaChannel::MaximumBufferSize

Метод MaximumBufferSize возвращает размер в байтах крупнейшего буфера, который настроен для поддержки этого объекта канала DMA.
IDmaChannel::P hysicalAddress

Метод PhysicalAddress возвращает физический адрес выделенного буфера.
IDmaChannel::SetBufferSize

Метод SetBufferSize задает текущий размер буфера канала DMA.
IDmaChannel::SystemAddress

Метод SystemAddress возвращает системный адрес выделенного буфера.
IDmaChannel::TransferCount

Метод TransferCount возвращает размер в байтах буфера, который в настоящее время передается подчиненным объектом DMA.

Требования

Требование Ценность
целевая платформа Виндоус
заголовка portcls.h