Función WSCSetProviderInfo (ws2spi.h)
Sintaxis
int WSCSetProviderInfo(
[in] LPGUID lpProviderId,
[in] WSC_PROVIDER_INFO_TYPE InfoType,
[in] PBYTE Info,
[in] size_t InfoSize,
[in] DWORD Flags,
[out] LPINT lpErrno
);
Parámetros
[in] lpProviderId
Puntero a un identificador único global (GUID) para el proveedor.
[in] InfoType
Clase de información que se va a establecer para esta entrada de protocolo LSP.
[in] Info
Puntero a un búfer que contiene los datos de la clase de información que se van a establecer para la entrada del protocolo LSP.
[in] InfoSize
Tamaño, en bytes, del búfer al que apunta el parámetro Info .
[in] Flags
Marcas usadas para modificar el comportamiento de la llamada de función WSCSetProviderInfo .
[out] lpErrno
Puntero al código de error si se produce un error en la función.
Valor devuelto
Si no se produce ningún error, WSCSetProviderInfo devuelve ERROR_SUCCESS (cero). De lo contrario, devuelve SOCKET_ERROR y se devuelve un código de error específico en el parámetro lpErrno .
Código de error | Significado |
---|---|
|
La llamada no se implementa. Este error se devuelve si se especifica **ProviderInfoAudit** en el parámetro InfoType . |
Uno o varios de los argumentos no están en una parte válida del espacio de direcciones del usuario. | |
Uno o varios argumentos no son válidos. | |
Error irrecuperable. Este error se devuelve en varias condiciones, incluido lo siguiente: el usuario carece de los privilegios administrativos necesarios para escribir en el registro winsock o se produjo un error al abrir una entrada de catálogo winsock. | |
No había suficiente memoria disponible. Este error se devuelve cuando no hay memoria suficiente para asignar una nueva entrada de catálogo. |
Observaciones
WSCSetProviderInfo se usa para establecer los datos de clase de información para un proveedor de servicios en capas. Cuando el parámetro InfoType se establece en ProviderInfoLspCategories, si el parámetro WSCSetProviderInfo se establece correctamente las marcas de categoría LSP adecuadas implementadas por el proveedor en función del valor pasado en el parámetro Info .
Winsock 2 admite protocolos superpuestas. Un protocolo en capas es aquel que implementa solo funciones de comunicaciones de nivel superior, mientras se basa en una pila de transporte subyacente para el intercambio real de datos con un punto de conexión remoto. Un ejemplo de un protocolo o proveedor de servicios en capas sería una capa de seguridad que agrega protocolo al proceso de establecimiento de conexión para realizar la autenticación y establecer un esquema de cifrado acordado mutuamente. Por lo general, este protocolo de seguridad requeriría los servicios de un protocolo de transporte confiable subyacente, como TCP o SPX. El término protocolo base hace referencia a un protocolo como TCP o SPX que es capaz de realizar comunicaciones de datos con un punto de conexión remoto. El término protocolo en capas se usa para describir un protocolo que no puede ser independiente. A continuación, una cadena de protocolos se definiría como uno o varios protocolos superpuestas y anclados por un protocolo base. Un protocolo base tiene el miembro ChainLen de la estructura WSAPROTOCOL_INFO establecida en BASE_PROTOCOL que se define como 1. Un protocolo superpuesta tiene el miembro ChainLen de la estructura WSAPROTOCOL_INFO establecida en LAYERED_PROTOCOL que se define como cero. Una cadena de protocolos tiene el miembro ChainLen de la estructura WSAPROTOCOL_INFO establecida en mayor que 1.
Durante la inicialización de LSP, el LSP debe proporcionar punteros a una serie de funciones SPI de Winsock. Se llamará a estas funciones durante el procesamiento normal por la capa directamente por encima del LSP (ya sea otro LSP o Ws2_32.dll).
Un LSP que implementa un sistema de archivos instalable (IFS) puede optar de forma selectiva por proporcionar punteros a funciones que se implementan por sí mismo o devolver los punteros proporcionados por la capa directamente debajo del LSP. Los LSP que no son IFS, ya que proporcionan sus propios identificadores, deben implementar todas las funciones SPI de Winsock. Esto se debe a que cada SPI requerirá el LSP para asignar todos los identificadores de socket que creó al controlador de socket del proveedor inferior (ya sea otro LSP o el protocolo base).
Sin embargo, todos los LSP realizan su trabajo específico realizando un procesamiento adicional solo en un subconjunto de las funciones SPI de Winsock.
Es posible definir categorías LSP basadas en el subconjunto de funciones SPI que implementa un LSP y la naturaleza del procesamiento adicional realizado para cada una de esas funciones.
Al clasificar los LSP, así como clasificar las aplicaciones que usan sockets winsock, es posible determinar de forma selectiva si un LSP debe participar en un proceso determinado en tiempo de ejecución.
En Windows Vista y versiones posteriores, un LSP se puede clasificar en función de cómo interactúa con las llamadas y los datos de Windows Sockets. Una categoría LSP es un grupo identificable de comportamientos en un subconjunto de funciones SPI de Winsock. Por ejemplo, un filtro de contenido HTTP se clasificaría como inspector de datos (la categoría LSP_INSPECTOR ). La categoría LSP_INSPECTOR inspeccionará, pero no modificará, los parámetros de las funciones SPI de transferencia de datos. Una aplicación puede consultar la categoría de un LSP y elegir no cargar el LSP según la categoría LSP y el conjunto de categorías LSP permitidas de la aplicación.
En la tabla siguiente se enumeran las categorías en las que se puede clasificar un LSP.
Categoría LSP | Descripción |
---|---|
**LSP_CRYPTO_COMPRESS** | El LSP es un proveedor de criptografía o compresión de datos. |
**LSP_FIREWALL** | El LSP es un proveedor de firewall. |
**LSP_LOCAL_CACHE** | El LSP es un proveedor de caché local. |
**LSP_INBOUND_MODIFY** | El LSP modifica los datos de entrada. |
**LSP_INSPECTOR** | El LSP inspecciona o filtra los datos. |
**LSP_OUTBOUND_MODIFY** | El LSP modifica los datos salientes. |
**LSP_PROXY** | El LSP actúa como proxy y redirige los paquetes. |
**LSP_REDIRECTOR** | El LSP es un redirector de red. |
**LSP_SYSTEM** | El LSP es aceptable para su uso en servicios y procesos del sistema. |
Si un LSP no tiene establecido una categoría, se considera que se encuentra en la categoría Todos los demás. Esta categoría LSP no se cargará en servicios o procesos del sistema (por ejemplo, lsass, winlogon y muchos procesos de svchost).
Un usuario que inició sesión como miembro del grupo Administradores solo puede llamar a la función WSCSetProviderInfo . Si un usuario llama a WSCSetProviderInfo que no es miembro del grupo Administradores, se producirá un error en la llamada a la función y se devolverá WSANO_RECOVERY en el parámetro lpErrno . Esta función también puede producir un error debido al control de cuentas de usuario (UAC). Si un usuario inicia sesión como miembro del grupo Administradores que no sea el administrador integrado, esta llamada producirá un error a menos que la aplicación se haya marcado en el archivo de manifiesto con un valor requestedExecutionLevel establecido en requireAdministrator. Si la aplicación en Windows Vista o Windows Server 2008 carece de este archivo de manifiesto, un usuario que ha iniciado sesión como miembro del grupo Administradores que no sea el administrador integrado debe ejecutar la aplicación en un shell mejorado como administrador integrado (administrador de RunAs) para que esta función se realice correctamente.
Requisitos
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | ws2spi.h |
Library | Ws2_32.lib |
Archivo DLL | Ws2_32.dll |
Consulte también
Categorización de proveedores de servicios y aplicaciones en capasWSAPROTOCOL_INFOWSCGetApplicationCategoryWSCGetProviderInfoWSCSetApplicationCategoryWSC_PROVIDER_INFO_TYPE