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) |