Partager via


DMA_START_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 ProviderStartDma démarre un transfert DMA sur le canal DMA spécifié.

Syntaxe

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [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 du premier NET_DMA_DESCRIPTOR structure 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

ProviderStartDma retourne l’une des valeurs status suivantes :

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

Remarques

L’interface NetDMA appelle la fonction ProviderStartDma d’un pilote de fournisseur DMA pour démarrer un transfert DMA. L’interface NetDMA peut appeler ProviderStartDma à tout moment après l’allocation d’un canal DMA. L’interface NetDMA doit appeler ProviderStartDma après avoir appelé ProviderAbortDma, ProviderResetChannel ou Fonction ProviderAllocateDmaChannel pour un canal DMA.

La source du transfert DMA est une liste liée de descripteurs DMA. Le membre NextDescriptor de la structure NET_DMA_DESCRIPTOR au niveau du paramètre DescriptorVirtualAddress contient l’adresse physique de la structure NET_DMA_DESCRIPTOR suivante dans la liste liée.

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 du 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.
 
Pour effectuer l’opération de démarrage, le fournisseur DMA doit ignorer la liste de descripteurs DMA existante, le cas échéant, une fois qu’il a terminé tout traitement sur le descripteur actuel. Le fournisseur DMA doit ignorer le membre NextDescriptor dans la structure NET_DMA_DESCRIPTOR actuelle et charger le descripteur spécifié par ProviderStartDma .

Une fois que ProviderStartDma a démarré le transfert DMA initial, l’interface NetDMA peut appeler la fonction ProviderAppendDma pour ajouter des données supplémentaires au transfert.

NetDMA appelle ProviderStartDma à 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

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel