Compartilhar via


Macro NdisMSetupDmaTransfer (ndis.h)

A função NdisMSetupDmaTransfer configura o controlador 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 DMA foi configurado para transferir os dados especificados, que foram liberados para ou do 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 de comprimento de determinado é 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 de Deslocamento e de Comprimento deve ser um subconjunto adequado do especificado em buffer .

_M_

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

Valor de retorno

Nenhum

Observações

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

O chamador do 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 de Deslocamento e Comprimento, 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 miniporto 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 para um buffer de preparo interno e passar um mapeamento de descritor de buffer alocado pelo driver que faz o buffer para NdisMSetupDmaTransfer.

No retorno de NdisMSetupDmaTransfer, o controlador 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 de NdisMCompleteDmaTransfer.

Requisitos

Requisito Valor
de cliente com suporte mínimo 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.
da Plataforma de Destino Universal
cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI Irql_Miniport_Driver_Function(ndis)

Consulte também

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel