Compartir a través de


Macro NdisMSetupDmaTransfer (ndis.h)

La función NdisMSetupDmaTransfer configura el controlador DMA de host para una transferencia DMA.

Sintaxis

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

Parámetros

_S

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve el estado de la solicitud, que puede ser uno de los siguientes:

NDIS_STATUS_SUCCESS

El controlador DMA se ha configurado para transferir los datos especificados, que se han vaciado hacia o desde el dispositivo para mantener la integridad de los datos.

NDIS_STATUS_RESOURCES

Error al intentar configurar el controlador DMA para la transferencia, ya sea porque el canal designado por MiniportDmaHandle está actualmente en uso transfiriendo datos o porque la longitud especificada no es válida.

_H

Identificador DMA devuelto por la función NdisMRegisterDmaChannel durante la inicialización.

_B

Puntero al descriptor de búfer que asigna el intervalo de memoria del host desde el que o en el que se transferirán los datos.

_O

Desplazamiento de bytes dentro del búfer asignado en el que se debe iniciar la transferencia. Cero indica que la transferencia debe comenzar en el byte inicial del intervalo especificado en Buffer .

_L

Número de bytes de datos que se van a transferir. El intervalo especificado por Offset y Length debe ser un subrango adecuado de que se especificó en Buffer .

_M_

Valor booleano que es TRUE para una transferencia saliente desde el sistema a través de la NIC. De lo contrario, es FALSE.

Valor devuelto

None

Observaciones

Los controladores de NIC subordinadas-DMA llaman a NdisMSetupDmaTransfer en respuesta a las solicitudes de envío entrantes, para las que el controlador establece WriteToDevice en TRUE. Establecen WriteToDevice en FALSE cuando transfieren datos recibidos de la NIC a la memoria del host.

El autor de la llamada de NdisMSetupDmaTransfer proporciona un descriptor de búfer que asigna el intervalo de memoria del host que es el destino de la transferencia o que contiene datos para una operación de descarga del host a la NIC. Para especificar un tamaño de transferencia que se adapte a las restricciones DMA de la NIC, el autor de la llamada puede configurar un subrango que se transferirá con los parámetros Offset y Length si es necesario.

El autor de la llamada debe proporcionar un descriptor de búfer que especifique el intervalo de host en el que se transferirán los datos recibidos desde la NIC cuando WriteToDevice sea FALSE. De lo contrario, el descriptor de búfer de Buffer se encadenó a una entrada de descriptor de paquete al controlador de minipuerto. Función MiniportSendNetBufferLists .

Para mejorar el rendimiento de las solicitudes de transmisión pequeñas, como una solicitud de envío de menos de 256 bytes de longitud, un controlador de miniporte puede copiar los datos del paquete en un búfer de almacenamiento provisional interno y pasar una asignación de descriptor de búfer asignada por el controlador que almacena el búfer en NdisMSetupDmaTransfer.

A cambio de NdisMSetupDmaTransfer, el controlador DMA host se ha programado para la transferencia. A continuación, el controlador de miniporte programa la NIC para la operación de transferencia.

Una vez completada la transferencia, el controlador de minipuerto debe llamar al Función NdisMCompleteDmaTransfer .

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulta NdisMSetupDmaTransfer (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulta NdisMSetupDmaTransfer (NDIS 5.1)) en Windows XP.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_Miniport_Driver_Function(ndis)

Consulte también

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel