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

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

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Драйвер мини-порта также может реализовать собственный IDmaChannel интерфейс, если ему требуются возможности, которые отсутствуют в реализации драйвера порта по умолчанию. Дополнительные сведения об этом см. в разделе Фильтры волн. Когда драйвер порта вызывает метод 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.

Требования

Требование Значение
Целевая платформа Windows
Header portcls.h