Compartir a través de


Asignación de un puerto NDIS

Para asignar un puerto NDIS para un adaptador de minipuerto, un controlador de minipuerto llama a la función NdisMAllocatePort . NdisMAllocatePort es sincrónico y devuelve después de que NDIS haya asignado correctamente los recursos necesarios para el puerto.

Antes de que el controlador de miniporte llame a NdisMAllocatePort, el controlador debe llamar a la función NdisMSetMiniportAttributes para establecer los atributos en la estructura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Los controladores de minipuerto pueden llamar a NdisMAllocatePort para un adaptador de minipuerto después de que la llamada a NdisMSetMiniportAttributes se devuelva correctamente y antes de que NDIS llame a la función MiniportHaltEx para ese adaptador de minipuerto.

NDIS siempre asigna el puerto predeterminado (puerto cero), por lo que los controladores de minipuerto no deben asignar un puerto predeterminado. NDIS libera el puerto predeterminado después de que el controlador de minipuerto devuelva el formato MiniportHaltEx.

NDIS asigna un número de puerto a un puerto cuando el controlador de minipuerto llama a NdisMAllocatePort. El controlador especifica las características del puerto en la estructura de NDIS_PORT_CHARACTERISTICS antes de que el controlador llame a NdisMAllocatePort. Cuando NdisMAllocatePort devuelve correctamente, el miembro PortNumber de NDIS_PORT_CHARACTERISTICS que el parámetro PortCharacteristics especifica se establece en el número de puerto que NDIS asignó al puerto.

Antes de volver de MiniportHaltEx, un controlador de miniport debe llamar a la función NdisMFreePort para liberar todos los puertos asociados a un adaptador de miniport. Si se produce un error en la inicialización de un adaptador de minipuerto, el controlador debe llamar a NdisMFreePort para liberar todos los puertos asignados antes de que devuelva desde la función MiniportInitializeEx . Para obtener más información sobre cómo liberar puertos NDIS, vea Liberar puertos NDIS.

El número máximo de puertos que un controlador de minipuerto puede asignar es 0xffffff. Sin embargo, en la práctica, los controladores establecerán un número máximo basado en el tipo de puerto y los requisitos de la aplicación de controlador. Por ejemplo, para una aplicación de puente, es poco probable que el número de puertos supere los 16. El número de puertos sería mayor para los puntos de acceso que usan puertos suplicantes 802.1x y significativamente mayores para los controladores WAN que usan puertos de red privada virtual (VPN).

Después de que un controlador de minipuerto asigne un puerto, el puerto se encuentra en el estado asignado y el puerto no está activo. No se puede usar un puerto para enviar y recibir datos, iniciar una indicación de estado, emitir una solicitud de OID o iniciar un evento de Plug and Play (PnP), hasta que se active el puerto. NDIS activa automáticamente el puerto predeterminado después de que el controlador de minipuerto establezca los atributos de registro en una estructura de NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Para solicitar que NDIS no active el puerto predeterminado, un controlador de minipuerto puede establecer NDIS_MINIPORT_ATTRIBUTES_CONTROLS_DEFAULT_PORT en el miembro AttributeFlags de NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES.

NDIS pasa el estado de autenticación del puerto predeterminado a la función MiniportInitializeEx en el miembro DefaultPortAuthStates de la estructura NDIS_MINIPORT_INIT_PARAMETERS . Si un controlador de minipuerto controla el puerto predeterminado, cuando el controlador de minipuerto activa el puerto predeterminado, puede activar el puerto predeterminado mediante la configuración de autenticación predeterminada. Para obtener más información sobre cómo activar el puerto predeterminado, consulte Activación de puertos NDIS.

Los controladores de minipuerto pueden usar la marca NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS en el miembro Flags de la estructura NDIS_PORT_CHARACTERISTICS para los puertos que asignan y activan los controladores. En el caso de asignación, NDIS asigna los estados de autenticación predeterminados a los nuevos puertos y omite los estados de autenticación que se pasan a la función NdisMAllocatePort .

Para obtener más información sobre los estados de puerto NDIS, consulte Estados de puerto NDIS. Para obtener más información sobre la activación de puertos, consulte Activación de puertos NDIS.