Recepción y traducción de direcciones NIC
El modificador de Windows Sockets siempre usa las familias de direcciones WSK, que contienen direcciones IP, cuando interactúa con proveedores de servicios SAN y NIC SAN. El modificador no usa la familia de direcciones nativas de una SAN. Por lo tanto, un proveedor de servicios SAN debe usar su controlador proxy asociado para recuperar la lista de direcciones IP asignadas a sus NIC. El proveedor de servicios SAN usa estas direcciones IP al interactuar con su controlador proxy. El controlador proxy debe traducirse entre direcciones IP y direcciones nativas.
Durante la inicialización, un controlador proxy normalmente se registra con la Interfaz de controlador de transporte (TDI) para las notificaciones de cambio de dirección. Todos los transportes compatibles con Plug and Play (PnP), incluido TCP/IP, proporcionan notificaciones de cambio de dirección a través de TDI a los clientes que se han registrado para dichas notificaciones.
Nota TDI no se admitirá en las versiones de Microsoft Windows después de Windows Vista. Use windows Filtering Platform o Winsock Kernel en su lugar.
Registro para la notificación de cambio de dirección
Durante la inicialización, un controlador proxy llama a la función TdiRegisterPnPHandlers para registrarse en las notificaciones de cambio de dirección. En esta llamada, el controlador proxy pasa punteros a funciones de devolución de llamada para las adiciones y eliminaciones de direcciones en los miembros AddAddressHandlerV2 y DelAddressHandlerV2 de la estructura TDI_CLIENT_INTERFACE_INFO. Una vez que el controlador proxy se registra para recibir estas notificaciones, TDI indica inmediatamente todas las direcciones de red activas actualmente mediante la devolución de llamada de la dirección de complemento.
TDI pasa los siguientes parámetros a las funciones de devolución de llamada add-address o delete-address del controlador proxy:
Dirección
Puntero a una estructura de TA_ADDRESS que describe la dirección de red asignada o quitada de la NIC. En el caso de TCP/IP, este puntero es realmente un puntero a una estructura de TA_ADDRESS_IP.
DeviceName
Puntero a una cadena Unicode que identifica el enlace de transporte a NIC con el que está asociada la dirección. En el caso de TCP/IP, la cadena Unicode tiene el formato siguiente:
\Device\Tcpip_{NIC-GUID}
donde NIC-GUID es el identificador único global asignado por el subsistema de configuración de red a la NIC.
Las definiciones de estructura anteriores se definen en el archivo de encabezado tdi.h. Las funciones de registro y devolución de llamada anteriores se definen en el archivo de encabezado tdikrnl.h. Estos archivos de encabezado están disponibles en el Kit de desarrollo de controladores de Microsoft Windows (DDK) y el Kit de controladores de Windows (WDK). La información detallada sobre las notificaciones PnP de TDI se incluye en devoluciones de llamada de cliente TDI y eventos de cliente TDI y controladores de notificaciones PnP.
Nota TDI no se admitirá en las versiones de Microsoft Windows después de Windows Vista. Use windows Filtering Platform o Winsock Kernel en su lugar.
Mantenimiento de una lista de direcciones IP
Un controlador proxy del proveedor de servicios SAN usa notificaciones de dirección de complemento y de eliminación para mantener la lista de direcciones IP asignadas a cada NIC bajo su control. El controlador proxy usa esta lista para traducir entre una o varias direcciones IP asignadas a una NIC SAN por el transporte TCP/IP y las direcciones SAN nativas. El controlador proxy también debe proporcionar una rutina de control de dispositivo que haga que la lista de direcciones IP asignadas a una NIC esté disponible para el conmutador Windows Sockets siempre que el conmutador realice una consulta de código de control de SIO_ADDRESS_LIST_QUERY. La rutina DriverEntry del controlador proxy debe especificar un punto de entrada para esta rutina de control de dispositivo.
El modificador de Windows Sockets mantiene una lista de todas las direcciones IP asignadas a cada NIC san. Para recuperar las direcciones IP de esta lista inclusiva, el modificador llama a cada función WSPIoctl del proveedor de servicios SAN, pasando el código de control de SIO_ADDRESS_LIST_QUERY. Cada proveedor de servicios SAN, a su vez, consulta su controlador proxy asociado para su lista individual de direcciones IP asignadas a sus NIC SAN. Una vez notificado el modificador de un cambio de dirección, vuelve a consultar cada proveedor de servicios SAN para obtener actualizaciones en cada lista individual.