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:
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 |