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