Интерфейс IDmaChannel (portcls.h)
Интерфейс IDmaChannel
предоставляет абстракцию канала DMA и связанных с ним буферов DMA и параметров использования. Драйвер порта WaveCyclic или WavePci реализует этот интерфейс и предоставляет его драйверу miniport WaveCyclic или WavePci. Драйвер miniport получает ссылку на реализацию IDmaChannel
объекта драйвера порта, вызывая один из методов NewXxxDmaChannel драйвера порта:
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 |