Condividi tramite


Interfaccia IDmaChannel (portcls.h)

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

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Un driver miniport può anche implementare la propria IDmaChannel interfaccia se richiede funzionalità che non si trovano nell'implementazione predefinita del driver di porta. Per altre informazioni su questo argomento, vedere Filtri onda. Quando il driver di porta chiama il metodo 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 IUnknown .

L'implementazione corrente dell'interfaccia in Portcls.sys non è multithread-safe perché non sincronizza internamente l'accesso IDmaChannel ai dati condivisi. In genere, un singolo thread driver chiama i metodi di un IDmaChannel oggetto. 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 IDmaChannel oggetto, il writer del driver deve sincronizzare le chiamate al metodo per impedire il danneggiamento dei dati interni.

Per altre informazioni, vedere Oggetti canale DMA.

Nota

Microsoft supporta un ambiente diversificato e inclusivo. Questo articolo contiene riferimenti alla terminologia che la guida allo stile Microsoft per la comunicazione senza pregiudizi riconosce come esclusioni. La parola o la frase viene usata in questo articolo per la coerenza perché attualmente viene visualizzata nel software. Quando il software viene aggiornato per rimuovere la lingua, questo articolo verrà aggiornato in allineamento.

Ereditarietà

L'interfaccia IDmaChannel eredita dall'interfaccia IUnknown.

Metodi

L'interfaccia IDmaChannel include questi metodi.

 
IDmaChannel::AllocateBuffer

Il metodo AllocateBuffer alloca un buffer comune a cui è possibile accedere 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 dei dati del canale DMA.
IDmaChannel::CopyFrom

Il metodo CopyFrom copia i dati di esempio dal buffer comune del canale DMA al 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 che questo oggetto canale DMA è configurato per supportare.
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.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione portcls.h