Compartilhar via


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

Nota Não há suporte para a interface NetDMA em Windows 8 e posteriores.

A função ProviderAppendDma acrescenta uma lista vinculada de descritores DMA ao último descritor em um canal DMA.

Sintaxe

DMA_APPEND_HANDLER DmaAppendHandler;

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

Parâmetros

[in] ProviderChannelContext

Um ponteiro que identifica a área de contexto de um canal DMA. O provedor de DMA retornou esse identificador ao NetDMA no local especificado no parâmetro pProviderChannelContext do Função ProviderAllocateDmaChannel .

[in] DescriptorVirtualAddress

Um ponteiro para o endereço virtual da primeira estrutura NET_DMA_DESCRIPTOR em uma lista vinculada de descritores de DMA. O endereço físico correspondente é especificado no parâmetro DescriptorPhysicalAddress .

[in] DescriptorPhysicalAddress

Um ponteiro para o endereço físico do primeiro descritor de DMA em uma lista vinculada de descritores de DMA. O endereço virtual correspondente é especificado no parâmetro DescriptorVirtualAddress .

[in] DescriptorCount

O número de descritores de DMA em DescriptorVirtualAddress .

Nota Os drivers do provedor NetDMA antes do NetDMA versão 2.0 podem ignorar o parâmetro DescriptorCount . Para o NetDMA 2.0 e versões posteriores, esse parâmetro é a contagem de descritores na operação de DMA.
 

Retornar valor

ProviderAppendDma retorna um dos seguintes valores de status:

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

Comentários

A interface NetDMA chama a função ProviderAppendDma de um driver de provedor de DMA para acrescentar uma lista vinculada de descritores de DMA após o último descritor em um canal DMA. A interface NetDMA pode chamar ProviderAppendDma várias vezes após a inicialização de uma transferência de DMA. No entanto, a interface NetDMA deve chamar a função ProviderStartDma após uma redefinição ou anulação de canal ou depois que o canal DMA for alocado pela primeira vez.

Nota No NetDMA 2.0 e versões posteriores, a lista vinculada de descritores não é terminada em NULL. O membro NextDescriptor no último descritor na lista vinculada especifica o endereço físico da estrutura NET_DMA_DESCRIPTOR que será usado na chamada subsequente para a função ProviderAppendDma . Um driver de provedor NetDMA 2.0 pode armazenar em cache o endereço em NextDescriptor e usar esse endereço como o início da lista vinculada para a próxima operação append.
 
A interface NetDMA define o membro NextDescriptor do último descritor para o início da nova cadeia de descritores antes de chamar ProviderAppendDma.

Se o descritor atual em uma transferência ativa for o último descritor, o mecanismo DMA deverá ler novamente o último descritor. O membro NextDescriptor na estrutura do último NET_DMA_DESCRIPTOR deve ter um novo endereço e o mecanismo de DMA deve continuar com o próximo descritor. Se o descritor atual não for o último descritor, o mecanismo de DMA poderá continuar processando descritores DMA sem tarefas adicionais.

O NetDMA chama ProviderAppendDma em IRQL <= DISPATCH_LEVEL.

Requisitos

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

Confira também

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma