Compartilhar via


DMA_CHANNEL_ALLOCATE_HANDLER função de retorno de chamada (netdma.h)

Nota Não há suporte para a interface NetDMA

em Windows 8 e posteriores.

 
A função ProviderAllocateDmaChannel aloca um canal DMA.

Sintaxe

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

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

Parâmetros

[in] ProviderContext

Um ponteiro que identifica a área de contexto de um provedor de DMA. O driver do provedor de DMA passa esse identificador para a interface NetDMA em uma chamada para o Função NetDmaRegisterProvider .

[in] ChannelParameters

Um ponteiro para um NET_DMA_CHANNEL_PARAMETERS estrutura que define os parâmetros de configuração para o canal DMA.

[in] NetDmaChannelHandle

Um identificador que identifica o canal DMA. Os drivers de provedor passam esse identificador para funções Do NetDmaXxx para identificar o canal DMA.

[out] pProviderChannelContext

Um ponteiro para um valor que é um ponteiro para a área de contexto de um provedor de DMA para o canal DMA. O driver do provedor de DMA aloca essa área de contexto antes de retornar de ProviderAllocateDmaChannel. O NetDMA passa o ponteiro da área de contexto para funções ProviderXxx que exigem um contexto de canal do provedor.

Retornar valor

ProviderAllocateDmaChannel retorna um dos seguintes valores de status:

Código de retorno Descrição
STATUS_SUCCESS
A operação foi concluída com sucesso.
STATUS_RESOURCES
A operação falhou devido a recursos insuficientes.
STATUS_UNSUCCESSFUL
A operação falhou por motivos não especificados.

Comentários

A interface NetDMA chama a função ProviderAllocateDmaChannel de um driver de provedor de DMA para alocar um canal DMA. A interface NetDMA chama ProviderAllocateDmaChannel antes de usar um canal DMA.

O driver do provedor de DMA tenta alocar um canal DMA com uma afinidade de CPU de interrupção que corresponde a um bit especificado no membro ProcessorAffinityMask do NET_DMA_CHANNEL_PARAMETERS estrutura no parâmetro ChannelParameters . Se o MSI-X não tiver suporte ou o MSI-X tiver suporte, mas um canal DMA com uma afinidade de CPU de interrupção correspondente não estiver disponível, o driver do provedor de DMA alocará qualquer canal DMA disponível e chamará a rotina KeSetTargetProcessorDpc para definir a CPU de destino do DPC de interrupção para corresponder a um dos bits de máscara de afinidade especificados.

O provedor de DMA sempre retorna o número da CPU associado ao DPC de interrupção do canal DMA para a interface NetDMA no membro CpuNumber da estrutura NET_DMA_CHANNEL_PARAMETERS.

O driver do provedor DMA fornece um ponteiro para um bloco de informações de contexto alocadas pelo driver no parâmetro pProviderChannelContext de ProviderAllocateDmaChannel. Essa área de contexto armazena informações sobre o canal DMA. A interface NetDMA passa as informações de contexto em chamadas subsequentes para funções ProviderXxx que exigem um contexto de canal DMA.

Quando a interface NetDMA chama ProviderAllocateDmaChannel, ela fornece um identificador no parâmetro NetDmaChannelHandle . O driver do provedor de DMA usa esse identificador em chamadas subsequentes para funções NetDmaXxx associadas ao canal DMA.

A interface NetDMA chama a função ProviderFreeDmaChannel para liberar um canal DMA alocado anteriormente.

O NetDMA chama ProviderAllocateDmaChannel em IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NetDMA 1.0 no Windows Vista.
Plataforma de Destino Windows
Cabeçalho netdma.h (inclua Netdma.h)
IRQL <= DISPATCH_LEVEL

Confira também

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel