Compartilhar via


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

Observação não há suporte para a interface NetDMA

no Windows 8 e posterior.

A função ProviderStartDma inicia uma transferência de DMA no canal 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 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 DMA em DescriptorVirtualAddress .

Observação 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 DMA.
 

Valor de retorno

ProviderStartDma retorna um dos seguintes valores de status:

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

Observações

A interface NetDMA chama a função ProviderStartDma de um driver de provedor 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 o ProviderAbortDma, ProviderResetChannelou função ProviderAllocateDmaChannel para um canal DMA.

A origem da transferência de DMA é uma lista vinculada de descritores DMA. O nextDescriptor membro 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.

Observação no NetDMA 2.0 e versões posteriores, a lista vinculada de descritores não é encerrada em NULL. O membro NextDescriptor no último descritor da lista vinculada especifica o endereço físico da estrutura de NET_DMA_DESCRIPTOR que será usado na chamada subsequente para a função ProviderAppendDma. Um driver de provedor do 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 de Acréscimo.
 
Para executar a operação de início, o provedor de DMA deve desconsiderar 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 de NET_DMA_DESCRIPTOR atual e carregar o descritor que especifica ProviderStartDma.

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

O NetDMA chama ProviderStartDma no IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Valor
de cliente com suporte mínimo 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.
da Plataforma de Destino Windows
cabeçalho netdma.h (inclua Netdma.h)
IRQL <= DISPATCH_LEVEL

Consulte também

NET_DMA_DESCRIPTOR

providerAbortDma

ProviderAllocateDmaChannel

providerAppendDma

providerResetChannel