Partager via


DMA_APPEND_HANDLER fonction de rappel (netdma.h)

Note L’interface NetDMA n’est pas prise en charge dans Windows 8 et versions ultérieures.

La fonction ProviderAppendDma ajoute une liste liée de descripteurs DMA au dernier descripteur sur un canal DMA.

Syntaxe

DMA_APPEND_HANDLER DmaAppendHandler;

NTSTATUS DmaAppendHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

Paramètres

[in] ProviderChannelContext

Pointeur qui identifie la zone de contexte d’un canal DMA. Le fournisseur DMA a retourné ce handle à NetDMA à l’emplacement spécifié dans le paramètre pProviderChannelContext du Fonction ProviderAllocateDmaChannel .

[in] DescriptorVirtualAddress

Pointeur vers l’adresse virtuelle de la première structure NET_DMA_DESCRIPTOR dans une liste liée de descripteurs DMA. L’adresse physique correspondante est spécifiée dans le paramètre DescriptorPhysicalAddress .

[in] DescriptorPhysicalAddress

Pointeur vers l’adresse physique du premier descripteur DMA dans une liste liée de descripteurs DMA. L’adresse virtuelle correspondante est spécifiée dans le paramètre DescriptorVirtualAddress .

[in] DescriptorCount

Nombre de descripteurs DMA dans DescriptorVirtualAddress .

Note Les pilotes du fournisseur NetDMA antérieurs à NetDMA version 2.0 peuvent ignorer le paramètre DescriptorCount . Pour NetDMA 2.0 et versions ultérieures, ce paramètre est le nombre de descripteurs dans l’opération DMA.
 

Valeur retournée

ProviderAppendDma retourne l’une des valeurs status suivantes :

Code de retour Description
STATUS_SUCCESS
L’opération s’est terminée avec succès.
STATUS_UNSUCCESSFUL
L’opération a échoué pour des raisons non spécifiées.

Remarques

L’interface NetDMA appelle la fonction ProviderAppendDma d’un pilote de fournisseur DMA pour ajouter une liste liée de descripteurs DMA après le dernier descripteur sur un canal DMA. L’interface NetDMA peut appeler ProviderAppendDma n’importe quel nombre de fois après le démarrage d’un transfert DMA. Toutefois, l’interface NetDMA doit appeler la fonction ProviderStartDma après une réinitialisation ou un abandon du canal, ou après la première allocation du canal DMA.

Note Dans NetDMA 2.0 et versions ultérieures, la liste liée des descripteurs n’est pas terminée par null. Le membre NextDescriptor dans le dernier descripteur de la liste liée spécifie l’adresse physique de la structure NET_DMA_DESCRIPTOR qui sera utilisée dans l’appel suivant à la fonction ProviderAppendDma . Un pilote de fournisseur NetDMA 2.0 peut mettre en cache l’adresse dans NextDescriptor et utiliser cette adresse comme début de la liste liée pour l’opération Append suivante.
 
L’interface NetDMA définit le membre NextDescriptor du dernier descripteur au début de la nouvelle chaîne de descripteurs avant d’appeler ProviderAppendDma.

Si le descripteur actuel dans un transfert actif est le dernier descripteur, le moteur DMA doit relire le dernier descripteur. Le membre NextDescriptor de la dernière structure NET_DMA_DESCRIPTOR doit avoir une nouvelle adresse, et le moteur DMA doit continuer avec le descripteur suivant. Si le descripteur actuel n’est pas le dernier descripteur, le moteur DMA peut continuer à traiter les descripteurs DMA sans tâches supplémentaires.

NetDMA appelle ProviderAppendDma à IRQL <= DISPATCH_LEVEL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NetDMA 2.0 dans Windows Server 2008. Pris en charge pour les pilotes NetDMA 1.1 dans Windows Server 2008. Pris en charge pour les pilotes NetDMA 1.0 dans Windows Server 2008 et Windows Vista.
Plateforme cible Windows
En-tête netdma.h (inclure Netdma.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma