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