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.