DMA_CHANNEL_ALLOCATE_HANDLER função de retorno de chamada (netdma.h)
em Windows 8 e posteriores.
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 |
---|---|
|
A operação foi concluída com sucesso. |
|
A operação falhou devido a recursos insuficientes. |
|
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 |