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