Función NdisMRegisterIoPortRange (ndis.h)

NdisMRegisterIoPortRange configura el acceso del controlador a los puertos de E/S del dispositivo con las funciones NdisRawReadPortXxx y NdisRawritePortXxx y reclama el intervalo de direcciones de puerto de E/S en el registro para la NIC de ese controlador.

Sintaxis

NDIS_STATUS NdisMRegisterIoPortRange(
  [out] PVOID       *PortOffset,
  [in]  NDIS_HANDLE MiniportAdapterHandle,
  [in]  UINT        InitialPort,
  [in]  UINT        NumberOfPorts
);

Parámetros

[out] PortOffset

Especifica una variable proporcionada por el autor de la llamada en la que esta función devuelve la dirección virtual base asignada para el intervalo de puertos de E/S relativos al bus especificado por InitialPort y NumberOfPorts .

[in] MiniportAdapterHandle

Especifica la entrada de identificador en MiniportInitializeEx.

[in] InitialPort

Especifica la dirección del puerto base relativa al bus para un intervalo de puertos que se van a asignar.

[in] NumberOfPorts

Especifica el número de puertos del intervalo que se va a asignar.

Valor devuelto

NdisMRegisterIoPortRange puede devolver una de las siguientes opciones:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
El intervalo especificado de puertos de E/S se asignó correctamente, por lo que el valor de PortOffset es válido y el intervalo asignado se ha reclamado en el registro para la NIC.
NDIS_STATUS_RESOURCE_CONFLICT
Error al intentar reclamar el intervalo de puertos de E/S en el registro, posiblemente porque otro controlador ya ha reclamado el intervalo de su dispositivo. NdisMRegisterIoPortRange registra un error si esto ocurre.
NDIS_STATUS_RESOURCES
El intervalo de puertos no se pudo asignar o NDIS no pudo asignar recursos para comprobar el registro en busca de conflictos de recursos de hardware.
NDIS_STATUS_FAILURE
El tipo de bus o el número de bus están fuera del intervalo o el valor initialPort y NumberOfPorts especificados no eran válidos (posiblemente no dentro del espacio de puerto de E/S de la plataforma actual).

Comentarios

Un controlador de minipuerto llama a NdisMRegisterIoPortRange desde su función MiniportInitializeEx . MiniportInitializeEx debe llamar a NdisMSetMiniportAttributes antes de llamar a NdisMRegisterIoPortRange.

NdisMRegisterIoPortRange asigna un intervalo de direcciones de dispositivo relativo al bus que el controlador de miniporte puede usar posteriormente para acceder a un intervalo de puertos de E/S en una NIC llamando a las funciones NdisRawXxx . Una llamada correcta reclama el intervalo especificado de puertos de E/S en el registro para la NIC del autor de la llamada.

Dado que se han asignado los parámetros pasados a NdisRawXxx , estas funciones se ejecutan significativamente más rápido que el NdisImmediate correspondiente. PuertoXxx. Después de una llamada correcta a NdisMRegisterIoPortRange, un controlador de minipuerto no puede llamar a ninguno de los NdisImmediate.. FuncionesXxx de puerto con direcciones relativas al bus o direcciones virtuales asignadas dentro de este intervalo de puertos de E/S.

Si se produce un error en su llamada a NdisMRegisterIoPortRange , MiniportInitializeEx debe liberar todos los recursos que ya asignó para una NIC y, a continuación, producir un error en la inicialización de esa NIC.

Los controladores de NIC con registros de dispositivo en el espacio de memoria del host llaman a NdisMMapIoSpace y, posteriormente, las funciones NdisRead/WriteRegisterXxx para acceder a los registros de NIC.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte NdisMRegisterIoPortRange (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisMRegisterIoPortRange (NDIS 5.1)) en Windows XP.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI Irql_Miniport_Driver_Function(ndis), NdisMRegisterIoPortRange(ndis)

Consulte también

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawritePortBufferUshort

NdisRawritePortUchar

NdisRawritePortUlong

NdisRawritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort