Partager via


Interface IDmaChannel (portcls.h)

L’interface IDmaChannel fournit une abstraction d’un canal DMA et de ses paramètres d’utilisation et de mémoire tampon DMA associés. Un pilote de port WaveCyclique ou WavePci implémente cette interface et l’expose au pilote miniport WaveCyclique ou WavePci. Le pilote miniport obtient une référence à l’implémentation du pilote de port d’un objet IDmaChannel en appelant l’une des méthodes NewXxxDmaChannel du pilote de port :

IPortWavePci ::NewMasterDmaChannel

IPortWaveCyclique ::NewMasterDmaChannel

IPortWaveCyclique ::NewSlaveDmaChannel

Un pilote miniport peut également implémenter sa propre interface de IDmaChannel si elle nécessite des fonctionnalités qui ne se trouvent pas dans l’implémentation par défaut du pilote de port. Pour plus d’informations sur ce problème, consultez filtres d’ondes. Lorsque le pilote de port appelle la méthode NewStream du pilote miniport (par exemple, IMiniportWaveCyclique ::NewStream), la méthode génère l’objet IDmaChannel du pilote miniport vers le pilote de port. IDmaChannel hérite de l’interface IUnknown.

L’implémentation actuelle de l’interface IDmaChannel dans Portcls.sys n’est pas multithread-safe, car elle ne synchronise pas en interne l’accès aux données partagées. En règle générale, un thread de pilote unique appelle les méthodes d’un objet IDmaChannel. Dans ce cas, il n’existe aucun risque d’appels de deux méthodes qui accèdent simultanément aux mêmes données. Toutefois, si plusieurs threads peuvent appeler les méthodes d’un objet IDmaChannel en même temps, l’enregistreur de pilotes doit synchroniser les appels de méthode pour empêcher l’altération des données internes.

Pour plus d’informations, consultez d’objets de canal DMA.

Note

Microsoft prend en charge un environnement diversifié et inclusif. Cet article contient des références à la terminologie que le guide de style Microsoft pour la communication sans biais reconnaît comme exclusion. Le mot ou l’expression est utilisé dans cet article pour la cohérence, car il apparaît actuellement dans le logiciel. Lorsque le logiciel est mis à jour pour supprimer la langue, cet article sera mis à jour pour être aligné.

Héritage

L’interface IDmaChannel hérite de l’interface IUnknown.

Méthode

L’interface IDmaChannel possède ces méthodes.

 
IDmaChannel ::AllocateBuffer

La méthode AllocateBuffer alloue une mémoire tampon commune accessible par le pilote de port et le matériel DMA.
IDmaChannel ::AllocatedBufferSize

La méthode AllocatedBufferSize retourne la taille de la mémoire tampon allouée.
IDmaChannel ::BufferSize

La méthode BufferSize retourne la taille en octets de la mémoire tampon de données du canal DMA.
IDmaChannel ::CopyFrom

La méthode CopyFrom copie des exemples de données de la mémoire tampon commune du canal DMA vers la mémoire tampon de destination spécifiée.
IDmaChannel ::CopyTo

La méthode CopyTo copie des exemples de données dans la mémoire tampon commune du canal DMA à partir de la mémoire tampon source spécifiée.
IDmaChannel ::FreeBuffer

La méthode FreeBuffer libère la mémoire tampon allouée par l’appel précédent à IDmaChannel ::AllocateBuffer.
IDmaChannel ::GetAdapterObject

La méthode GetAdapterObject retourne l’objet d’adaptateur matériel du canal DMA.
IDmaChannel ::MaximumBufferSize

La méthode MaximumBufferSize retourne la taille en octets de la plus grande mémoire tampon que cet objet de canal DMA est configuré pour prendre en charge.
IDmaChannel ::P hysicalAddress

La méthode PhysicalAddress retourne l’adresse physique de la mémoire tampon allouée.
IDmaChannel ::SetBufferSize

La méthode SetBufferSize définit la taille actuelle de la mémoire tampon du canal DMA.
IDmaChannel ::SystemAddress

La méthode SystemAddress retourne l’adresse système de la mémoire tampon allouée.
IDmaChannel ::TransferCount

La méthode TransferCount retourne la taille en octets de la mémoire tampon en cours de transfert par un objet DMA subordonné.

Exigences

Exigence Valeur
plateforme cible Windows
d’en-tête portcls.h