Proveedores de servicios de espacio de nombres
Un proveedor de espacios de nombres implementa una asignación de interfaz entre el SPI del espacio de nombres winsock y la interfaz de programación nativa de un servicio de nombres existente, como DNS, X.500 o NetWare Directory Services (NDS). Aunque un proveedor de espacios de nombres admite exactamente un espacio de nombres, es posible que se instalen varios proveedores para que se instale un espacio de nombres determinado. También es posible que un único archivo DLL cree una instancia de varios proveedores de espacios de nombres. A medida que se instalan proveedores de espacios de nombres, se mantiene un catálogo de estructuras de WSANAMESPACE_INFO . Una aplicación puede usar WSAEnumNameSpaceProviders para detectar qué espacios de nombres se admiten en un equipo.
En Windows Vista y versiones posteriores, se proporcionan una estructura de WSANAMESPACE_INFOEX mejorada y la función WSAEnumNameSpaceProvidersEx .
En plataformas de 64 bits, se proporcionan funciones WSCEnumNameSpaceProviders32 y WSCEnumNameSpaceProvidersEx32 similares para enumerar el catálogo de 32 bits.
Consulte Requisitos del proveedor de servicios del espacio de nombres winsock para obtener información detallada.
Proveedores de servicios GetXbyY heredados
Windows Sockets 2 es totalmente compatible con las instalaciones de resolución de nombres específicas de TCP/IP que se encuentran en Windows Sockets versión 1.1. Para ello, incluye el conjunto de funciones GetXbyY en el SPI. Sin embargo, el tratamiento de este conjunto de funciones es algo diferente del resto de las funciones SPI. Las funciones GetXbyY que aparecen en el SPI están precedidas de GETXBYYSP_ y se resumen en la tabla siguiente.
Funciones de estilo de Berkeley
Nombre de la función SPI | Descripción |
---|---|
GETXBYYSP_gethostbyaddr | Proporciona una estructura de host para la dirección de host especificada. |
GETXBYYSP_gethostbyname | Proporciona una estructura de host para el nombre de host especificado. |
GETXBYYSP_getprotobyname | Proporciona una estructura protoent para el nombre de protocolo especificado. |
GETXBYYSP_getprotobynumber | Proporciona una estructura protoent para el número de protocolo especificado. |
GETXBYYSP_getservbyname | Proporciona una estructura servent para el servicio especificado nam.e |
GETXBYYSP_getservbyport | Proporciona una estructura de servent para el servicio en el puerto especificado. |
GETXBYYSP_gethostname | Devuelve el nombre de host estándar del equipo local. |
Funciones de estilo asincrónico
Nombre de la función SPI | Descripción |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | Proporciona una estructura de host para la dirección de host especificada. |
GETXBYYSP_WSAAsyncGetHostByName | Proporciona una estructura de host para el nombre de host especificado. |
GETXBYYSP_WSAAsyncGetProtoByName | Proporciona una estructura protoent para el nombre de protocolo especificado. |
GETXBYYSP_WSAAsyncGetProtoByNumber | Proporciona una estructura protoent para el número de protocolo especificado. |
GETXBYYSP_WSAAsyncGetServByName | Proporciona una estructura de servent para el nombre de servicio especificado. |
GETXBYYSP_WSAAsyncGetServByPort | Proporciona una estructura de servent para el servicio en el puerto especificado. |
GETXBYYSP_WSACancelAsyncRequest | Cancela una operación GetXbyY asincrónica. |
La sintaxis y la semántica de estas funciones GetXbyY en el SPI son exactamente las mismas que las documentadas en la especificación de API y, por lo tanto, no se repiten aquí.
El archivo DLL de Windows Sockets 2 permite exactamente un proveedor de servicios ofrecer estos servicios. Por lo tanto, no es necesario incluir punteros a estas funciones en la tabla de procedimientos recibidas de los proveedores de servicios en el inicio. En entornos de Windows, la ruta de acceso al archivo DLL que implementa estas funciones se recupera del valor que se encuentra en la siguiente ruta de acceso del Registro. Esta entrada del Registro no existe de forma predeterminada:
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servicios\WinSock2\Parámetros\GetXByYLibraryPath
Built-In proveedor de servicios GetXbyY predeterminado
Un proveedor de servicios GetXbyY predeterminado se integra en los componentes estándar en tiempo de ejecución de Windows Sockets 2. Este proveedor predeterminado implementa todas las funciones anteriores, por lo que no es necesario que estas funciones las implemente ningún proveedor de espacios de nombres. Sin embargo, un proveedor de espacios de nombres es libre de proporcionar cualquiera o todas estas funciones (y, por tanto, invalidar los valores predeterminados) simplemente almacenando la cadena que es la ruta de acceso al archivo DLL que implementa estas funciones en la clave del Registro indicada. Cualquiera de las funciones GetXbyY no exportadas por el archivo DLL del proveedor con nombre se proporcionará a través de los valores predeterminados integrados. Sin embargo, tenga en cuenta que si un proveedor decide proporcionar cualquiera de las versiones asincrónicas de las funciones GetXbyY , debe proporcionar todas las funciones asincrónicas para que la operación de cancelación funcione correctamente.
La implementación actual del proveedor de servicios GetXbyY predeterminado reside en el Wsock32.dll. En función de cómo se haya establecido la configuración de TCP/IP a través de Panel de control, la resolución de nombres se producirá mediante archivos de host DNS o local. Cuando se usa DNS, el proveedor de servicios GetXbyY predeterminado usa llamadas API estándar de Windows Sockets 1.1 para comunicarse con el servidor DNS. Estas transacciones se producirán con cualquier pila TCP/IP configurada como pila TCP/IP predeterminada. Sin embargo, dos casos especiales merecen mención especial.
La implementación predeterminada de GETXBYYSP_gethostname obtiene el nombre de host local del registro. Esto corresponderá al nombre asignado a "Mi computadora". La implementación predeterminada de GETXBYYSP_gethostbyname y GETXBYYSP_WSAAsyncGetHostByName siempre compara el nombre de host proporcionado con el nombre de host local. Si coinciden, la implementación predeterminada usa una interfaz privada para sondear la pila TCP/IP de Microsoft para detectar su dirección IP local. Por lo tanto, para ser completamente independiente de la pila TCP/IP de Microsoft, un proveedor de espacios de nombres debe implementar tanto GETXBYYSP_gethostbyname como GETXBYYSP_WSAAsyncGetHostByName.