DMA_START_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 ProviderStartDma inicia uma transferência de DMA no canal de DMA especificado.

Sintaxe

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [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

ProviderStartDma 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 ProviderStartDma de um driver de provedor de DMA para iniciar uma transferência de DMA. A interface NetDMA pode chamar ProviderStartDma a qualquer momento depois que um canal DMA é alocado. A interface NetDMA deve chamar ProviderStartDma depois de chamar ProviderAbortDma, ProviderResetChannel ou Função ProviderAllocateDmaChannel para um canal DMA.

A origem da transferência de DMA é uma lista vinculada de descritores de DMA. O membro NextDescriptor da estrutura NET_DMA_DESCRIPTOR no parâmetro DescriptorVirtualAddress contém o endereço físico da próxima estrutura NET_DMA_DESCRIPTOR na lista vinculada.

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.
 
Para executar a operação de início, o provedor de DMA deve ignorar a lista de descritores de DMA existente, se houver, depois de concluir qualquer processamento no descritor atual. O provedor de DMA deve ignorar o membro NextDescriptor na estrutura NET_DMA_DESCRIPTOR atual e carregar o descritor especificado por ProviderStartDma .

Depois que ProviderStartDma iniciar a transferência de DMA inicial, a interface NetDMA poderá chamar a função ProviderAppendDma para acrescentar dados adicionais à transferência.

O NetDMA chama ProviderStartDma 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

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel