Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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) |