Compartir a través de


Mecanismo de extensión de Provider-Specific

La funciónWSAIoctl permite a los proveedores de servicios ofrecer extensiones de características específicas del proveedor. Este mecanismo supone, por supuesto, que una aplicación conoce una extensión determinada y entiende tanto la semántica como la sintaxis implicada. Normalmente, el proveedor de servicios proporcionaría dicha información.

Para invocar una función de extensión, la aplicación primero debe solicitar un puntero a la función deseada. Esto se realiza a través de la funciónWSAIoctl mediante el código de comando SIO_GET_EXTENSION_FUNCTION_POINTER. El búfer de entrada para WSAIoctl contiene un identificador para la función de extensión deseada mientras que el búfer de salida contiene el propio puntero de función. Después, la aplicación puede invocar la función de extensión directamente sin pasar por el Ws2_32.dll.

Los identificadores asignados a las funciones de extensión son identificadores únicos globales (GUID) asignados por proveedores de servicios. Se insta a los proveedores que crean funciones de extensión a publicar detalles completos sobre la función, incluida la sintaxis del prototipo de función. Esto permite ofrecer funciones de extensión comunes y populares por más de un proveedor de servicios. Una aplicación puede obtener el puntero de función y usar la función sin necesidad de conocer nada sobre el proveedor de servicios concreto que implementa la función.

En Windows Vista y versiones posteriores, las nuevas extensiones del sistema Winsock se exportan directamente desde el archivo DLL de Winsock, por lo que no es necesario cargar estas extensiones función WSAIoctl. Las nuevas funciones de extensión disponibles en Windows Vista y versiones posteriores incluyen el WSAPoll y funciones de WSASendMsg que se exportan desde Ws2_32.dll.