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