Compartilhar via


Interface IDmaChannel (portcls.h)

A IDmaChannel interface fornece uma abstração de um canal DMA e seus parâmetros de uso e buffer de DMA associados. Um driver de porta WaveCyclic ou WavePci implementa essa interface e a expõe ao driver de miniporto WaveCyclic ou WavePci. O driver de miniporto obtém uma referência à implementação do driver de porta de um IDmaChannel objeto chamando um dos métodos NewXxxDmaChannel do driver de porta:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Um driver de miniporte também poderá implementar sua própria IDmaChannel interface se exigir recursos que não estão na implementação padrão do driver de porta. Para obter mais informações sobre isso, consulte Filtros de onda. Quando o driver de porta chama o método NewStream do driver de miniport (por exemplo, IMiniportWaveCyclic::NewStream), o método gera o objeto do driver de miniporto para o driver de IDmaChannel porta. IDmaChannel herda da interface IUnknown .

A implementação atual da IDmaChannel interface no Portcls.sys não é multithread-safe porque não sincroniza internamente o acesso aos dados compartilhados. Normalmente, um único thread de driver chama os métodos de um IDmaChannel objeto . Nesse caso, não há risco de duas chamadas de método acessarem simultaneamente os mesmos dados. No entanto, se vários threads puderem potencialmente chamar os métodos de um IDmaChannel objeto ao mesmo tempo, o gravador de driver deverá sincronizar as chamadas de método para evitar a corrupção de dados internos.

Para obter mais informações, consulte Objetos de canal DMA.

Observação

A Microsoft dá suporte a um ambiente diversificado e inclusivo. Este artigo contém referências à terminologia que o guia de estilo da Microsoft para comunicação sem preconceitos reconhece como excludente. A palavra ou frase é usada neste artigo para consistência porque ela aparece atualmente no software. Quando o software for atualizado para remover o idioma, este artigo será atualizado para estar em alinhamento.

Herança

A interface IDmaChannel herda da interface IUnknown.

Métodos

A interface IDmaChannel tem esses métodos.

 
IDmaChannel::AllocateBuffer

O método AllocateBuffer aloca um buffer comum que pode ser acessado pelo driver de porta e hardware de DMA.
IDmaChannel::AllocatedBufferSize

O método AllocatedBufferSize retorna o tamanho do buffer alocado.
IDmaChannel::BufferSize

O método BufferSize retorna o tamanho em bytes do buffer de dados do canal DMA.
IDmaChannel::CopyFrom

O método CopyFrom copia dados de exemplo do buffer comum do canal DMA para o buffer de destino especificado.
IDmaChannel::CopyTo

O método CopyTo copia dados de exemplo para o buffer comum do canal DMA do buffer de origem especificado.
IDmaChannel::FreeBuffer

O método FreeBuffer libera o buffer alocado pela chamada anterior para IDmaChannel::AllocateBuffer.
IDmaChannel::GetAdapterObject

O método GetAdapterObject retorna o objeto do adaptador de hardware do canal DMA.
IDmaChannel::MaximumBufferSize

O método MaximumBufferSize retorna o tamanho em bytes do maior buffer que esse objeto de canal DMA está configurado para dar suporte.
IDmaChannel::P hysicalAddress

O método PhysicalAddress retorna o endereço físico do buffer alocado.
IDmaChannel::SetBufferSize

O método SetBufferSize define o tamanho do buffer atual do canal DMA.
IDmaChannel::SystemAddress

O método SystemAddress retorna o endereço do sistema do buffer alocado.
IDmaChannel::TransferCount

O método TransferCount retorna o tamanho em bytes do buffer que está sendo transferido por um objeto DMA subordinado.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho portcls.h