Macro NdisMSetupDmaTransfer (ndis.h)

A função NdisMSetupDmaTransfer configura o controlador de DMA do host para uma transferência de DMA.

Sintaxe

void NdisMSetupDmaTransfer(
   _S,
   _H,
   _B,
   _O,
   _L,
   _M_
);

Parâmetros

_S

Um ponteiro para uma variável fornecida pelo chamador na qual essa função retorna o status da solicitação, que pode ser um dos seguintes:

NDIS_STATUS_SUCCESS

O controlador de DMA foi configurado para transferir os dados especificados, que foram liberados de ou para o dispositivo para manter a integridade dos dados.

NDIS_STATUS_RESOURCES

Uma tentativa de configurar o controlador de DMA para a transferência falhou porque o canal designado por MiniportDmaHandle está atualmente em uso transferindo dados ou porque o Comprimento especificado é inválido.

_H

O identificador de DMA retornado pela função NdisMRegisterDmaChannel durante a inicialização.

_B

Um ponteiro para o descritor de buffer mapeando o intervalo de memória do host do qual ou para o qual os dados serão transferidos.

_O

O deslocamento de bytes dentro do buffer mapeado no qual a transferência deve ser iniciada. Zero indica que a transferência deve começar no byte inicial do intervalo especificado em Buffer .

_L

O número de bytes de dados a serem transferidos. O intervalo especificado por Offset e Length deve ser um subconjunto adequado do especificado em Buffer .

_M_

Um valor booliano que é TRUE para uma transferência de saída do sistema por meio da NIC. Caso contrário, será FALSE.

Retornar valor

Nenhum

Comentários

Drivers de NICs subordinados-DMA chamam NdisMSetupDmaTransfer em resposta a solicitações de envio de entrada, para as quais o driver define WriteToDevice como TRUE. Eles definem WriteToDevice como FALSE quando transferem dados recebidos da NIC para a memória do host.

O chamador de NdisMSetupDmaTransfer fornece um descritor de buffer mapeando o intervalo de memória do host que é o destino da transferência ou que contém dados para uma operação de download do host para a NIC. Para especificar um tamanho de transferência para atender às restrições de DMA da NIC, o chamador pode configurar um subrange a ser transferido com os parâmetros Offset e Length , se necessário.

O chamador deve fornecer um descritor de buffer que especifica o intervalo de host para o qual os dados recebidos serão transferidos da NIC quando WriteToDevice for FALSE. Caso contrário, o descritor de buffer em Buffer foi encadeado a uma entrada de descritor de pacote para o driver de miniport Função MiniportSendNetBufferLists .

Para melhorar o desempenho de solicitações de transmissão pequenas, como uma solicitação de envio de menos de 256 bytes de comprimento, um driver de miniport pode copiar os dados do pacote em um buffer de preparo interno e passar um mapeamento de descritor de buffer alocado pelo driver para o buffer para NdisMSetupDmaTransfer.

No retorno de NdisMSetupDmaTransfer, o controlador de DMA do host foi programado para a transferência. Em seguida, o driver de miniporto programa a NIC para a operação de transferência.

Quando a transferência for concluída, o driver de miniporto deverá chamar o Função NdisMCompleteDmaTransfer .

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisMSetupDmaTransfer (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisMSetupDmaTransfer (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI Irql_Miniport_Driver_Function(ndis)

Confira também

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel