Compartir a través de


Macro NdisMSetupDmaTransfer (ndis.h)

La función NdisMSetupDmaTransfer configura el controlador DMA 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 una de las 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á usando actualmente la transferencia de datos o porque el longitud de especificado no es válido.

_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 ese especificado 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

Ninguno

Observaciones

Los controladores de NIC subordinadas de 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 para adaptarse a las restricciones DMA de la NIC, el autor de la llamada puede configurar un subrango que se transferirá con el Offset y parámetros 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 se encadenó a una entrada de descriptor de paquete al controlador de miniport 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 descriptores de búfer asignados por controladores que búfer a NdisMSetupDmaTransfer.

Al volver 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 miniport debe llamar al función NdisMCompleteDmaTransfer.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte NdisMSetupDmaTransfer (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisMSetupDmaTransfer (NDIS 5.1)) en Windows XP.
de la plataforma de destino de Universal
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI Irql_Miniport_Driver_Function(ndis)

Consulte también

miniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel