Condividi tramite


Interfaccia IDmaChannel (portcls.h)

L'interfaccia IDmaChannel fornisce un'astrazione di un canale DMA e dei relativi parametri di utilizzo e buffer DMA associati. Un driver di porta WaveCyclic o WavePci implementa questa interfaccia ed espone l'interfaccia al driver miniport WaveCyclic o WavePci. Il driver miniport ottiene un riferimento all'implementazione del driver di porta di un oggetto IDmaChannel chiamando uno dei metodi NewXxxDmaChannel del driver di porta:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Un driver miniport può anche implementare la propria interfaccia IDmaChannel se richiede funzionalità non incluse nell'implementazione predefinita del driver di porta. Per altre informazioni, vedere Filtri d'onda. Quando il driver di porta chiama il metodo di NewStream del driver miniport (ad esempio, IMiniportWaveCyclic::NewStream), il metodo restituisce l'oggetto IDmaChannel del driver miniport al driver di porta. IDmaChannel eredita dall'interfaccia di IUnknown.

L'implementazione corrente dell'interfaccia IDmaChannel in Portcls.sys non è multithread perché non sincronizza internamente l'accesso ai dati condivisi. In genere, un singolo thread driver chiama i metodi di un oggetto IDmaChannel. In questo caso, non esiste alcun rischio di due chiamate di metodo contemporaneamente all'accesso agli stessi dati. Tuttavia, se più thread possono chiamare contemporaneamente i metodi di un oggetto IDmaChannel, il writer di driver deve sincronizzare le chiamate al metodo per evitare il danneggiamento dei dati interni.

Per altre informazioni, vedere DMA Channel Objects.

Nota

Microsoft supporta un ambiente diversificato e inclusivo. Questo articolo contiene riferimenti alla terminologia riconosciuta dalla guida di stile Microsoft per la comunicazione senza pregiudizi come esclusioni. La parola o la frase viene usata in questo articolo per coerenza perché è attualmente presente nel software. Quando il software viene aggiornato per rimuovere la lingua, questo articolo verrà aggiornato per essere allineato.

Eredità

L'interfaccia IDmaChannel eredita dall'interfaccia IUnknown.

Metodi

L'interfaccia IDmaChannel dispone di questi metodi.

 
IDmaChannel::AllocateBuffer

Il metodo AllocateBuffer alloca un buffer comune accessibile dal driver di porta e dall'hardware DMA.
IDmaChannel::AllocateBufferSize

Il metodo AllocateBufferSize restituisce le dimensioni del buffer allocato.
IDmaChannel::BufferSize

Il metodo BufferSize restituisce le dimensioni in byte del buffer di dati del canale DMA.
IDmaChannel::CopyFrom

Il metodo CopyFrom copia i dati di esempio dal buffer comune del canale DMA nel buffer di destinazione specificato.
IDmaChannel::CopyTo

Il metodo CopyTo copia i dati di esempio nel buffer comune del canale DMA dal buffer di origine specificato.
IDmaChannel::FreeBuffer

Il metodo FreeBuffer libera il buffer allocato dalla chiamata precedente a IDmaChannel::AllocateBuffer.
IDmaChannel::GetAdapterObject

Il metodo GetAdapterObject restituisce l'oggetto adattatore hardware del canale DMA.
IDmaChannel::MaximumBufferSize

Il metodo MaximumBufferSize restituisce le dimensioni in byte del buffer più grande configurato per il supporto di questo oggetto canale DMA.
IDmaChannel::P hysicalAddress

Il metodo PhysicalAddress restituisce l'indirizzo fisico del buffer allocato.
IDmaChannel::SetBufferSize

Il metodo SetBufferSize imposta le dimensioni correnti del buffer del canale DMA.
IDmaChannel::SystemAddress

Il metodo SystemAddress restituisce l'indirizzo di sistema del buffer allocato.
IDmaChannel::TransferCount

Il metodo TransferCount restituisce le dimensioni in byte del buffer attualmente trasferito da un oggetto DMA subordinato.

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione portcls.h