DMA_CHANNEL_ALLOCATE_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 ProviderAllocateDmaChannel alloue un canal DMA.

Syntaxe

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

NTSTATUS DmaChannelAllocateHandler(
  [in]  PVOID ProviderContext,
  [in]  PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
  [in]  PVOID NetDmaChannelHandle,
  [out] PVOID *pProviderChannelContext
)
{...}

Paramètres

[in] ProviderContext

Pointeur qui identifie la zone de contexte d’un fournisseur DMA. Le pilote du fournisseur DMA transmet ce handle à l’interface NetDMA dans un appel à Fonction NetDmaRegisterProvider .

[in] ChannelParameters

Pointeur vers un NET_DMA_CHANNEL_PARAMETERS structure qui définit les paramètres de configuration du canal DMA.

[in] NetDmaChannelHandle

Handle qui identifie le canal DMA. Les pilotes de fournisseur passent ce handle aux fonctions NetDmaXxx pour identifier le canal DMA.

[out] pProviderChannelContext

Pointeur vers une valeur qui est un pointeur vers la zone de contexte d’un fournisseur DMA pour le canal DMA. Le pilote du fournisseur DMA alloue cette zone de contexte avant de retourner à partir de ProviderAllocateDmaChannel. NetDMA transmet le pointeur de zone de contexte aux fonctions ProviderXxx qui nécessitent un contexte de canal de fournisseur.

Valeur retournée

ProviderAllocateDmaChannel retourne l’une des valeurs de 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 ProviderAllocateDmaChannel d’un pilote de fournisseur DMA pour allouer un canal DMA. L’interface NetDMA appelle ProviderAllocateDmaChannel avant d’utiliser un canal DMA.

Le pilote du fournisseur DMA tente d’allouer un canal DMA avec une affinité de processeur d’interruption qui correspond à un bit spécifié dans le membre ProcessorAffinityMask du NET_DMA_CHANNEL_PARAMETERS structure au niveau du paramètre ChannelParameters . Si MSI-X n’est pas pris en charge ou msi-X est pris en charge, mais qu’un canal DMA avec une affinité d’interruption de processeur correspondante n’est pas disponible, le pilote du fournisseur DMA alloue n’importe quel canal DMA disponible et appelle la routine KeSetTargetProcessorDpc pour définir le processeur cible du DPC d’interruption pour qu’il corresponde à l’un des bits de masque d’affinité spécifiés.

Le pilote DMA retourne toujours le numéro de processeur qu’il a associé à la DPC d’interruption pour le canal DMA à l’interface NetDMA dans le membre CpuNumber de la structure NET_DMA_CHANNEL_PARAMETERS.

Le pilote du fournisseur DMA fournit un pointeur vers un bloc d’informations de contexte allouées au pilote au niveau du paramètre pProviderChannelContext de ProviderAllocateDmaChannel. Cette zone de contexte stocke des informations sur le canal DMA. L’interface NetDMA transmet les informations de contexte dans les appels suivants aux fonctions ProviderXxx qui nécessitent un contexte de canal DMA.

Lorsque l’interface NetDMA appelle ProviderAllocateDmaChannel, elle fournit un handle au niveau du paramètre NetDmaChannelHandle . Le pilote de fournisseur DMA utilise ce handle dans les appels suivants aux fonctions NetDmaXxx associées au canal DMA.

L’interface NetDMA appelle la fonction ProviderFreeDmaChannel pour libérer un canal DMA précédemment alloué.

NetDMA appelle ProviderAllocateDmaChannel à IRQL <= DISPATCH_LEVEL.

Configuration requise

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

Voir aussi

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel