Función WSCSetProviderInfo32 (ws2spi.h)

**Nota** Los proveedores de servicios en capas están en desuso. A partir de Windows 8 y Windows Server 2012, use la Plataforma de filtrado de Windows.
 
La función **WSCSetProviderInfo32** establece el valor de datos para la clase de información especificada para un proveedor de servicios en capas (LSP).
**Nota** Esta llamada es una versión estricta de 32 bits de WSCSetProviderInfo para su uso en plataformas de 64 bits. Se proporciona para permitir que los procesos de 64 bits accedan a los catálogos de 32 bits.
 

Sintaxis

int WSCSetProviderInfo32(
  [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 WSCSetProviderInfo32 .

[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, WSCSetProviderInfo32 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
ERROR_CALL_NOT_IMPLEMENTED
La llamada no se implementa. Este error se devuelve si se especifica **ProviderInfoAudit** en el parámetro InfoType .
WSAEFAULT
Uno o varios de los argumentos no están en una parte válida del espacio de direcciones del usuario.
WSAEINVAL
Uno o varios argumentos no son válidos.
WSANO_RECOVERY
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.
WSA_NOT_ENOUGH_MEMORY
Memoria insuficiente disponible. Este error se devuelve cuando no hay memoria suficiente para asignar una nueva entrada de catálogo.

Comentarios

WSCSetProviderInfo32 es una versión estricta de 32 bits de WSCSetProviderInfo. En un equipo de 64 bits, todas las llamadas no funcionan específicamente de 32 bits (por ejemplo, todas las funciones que no terminan en "32") funcionan en el catálogo nativo de 64 bits. Los procesos que se ejecutan en un equipo de 64 bits deben usar las llamadas de función específicas de 32 bits para funcionar en un catálogo estrictamente de 32 bits y conservar la compatibilidad. Las definiciones y la semántica de las llamadas de 32 bits específicas son las mismas que sus equivalentes nativos.

WSCSetProviderInfo32 se usa para establecer los datos de la clase de información para un proveedor de servicios en capas de 32 bits. Cuando el parámetro InfoType se establece en ProviderInfoLspCategories, si el parámetro WSCSetProviderInfo32 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 en capas. Un protocolo en capas es uno 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 un nivel de seguridad que agrega protocolo al proceso de establecimiento de conexión para realizar la autenticación y establecer un esquema de cifrado mutuamente acordado. 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 en capas 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 en capas 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 de 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. Esta función se llamará durante el procesamiento normal por parte de la capa directamente encima del LSP (ya sea otro LSP o Ws2_32.dll).

Un LSP que implementa un sistema de archivos instalable (IFS) puede elegir de forma selectiva proporcionar punteros a las funciones que se implementan por sí mismo, o pasar atrás 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 creados 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.

Mediante la clasificación de LSP, así como la clasificación de aplicaciones que usan sockets Winsock, es posible determinar selectivamente 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 un 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** LSP es un proveedor de caché local.
**LSP_INBOUND_MODIFY** El LSP modifica los datos entrantes.
**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 paquetes.
**LSP_REDIRECTOR** El LSP es un redirector de red.
**LSP_SYSTEM** El LSP es aceptable para su uso en los servicios y procesos del sistema.
 

Un LSP puede pertenecer a más de una categoría. Por ejemplo, el LSP de firewall/seguridad podría pertenecer a las categorías inspector (LSP_INSPECTOR) y firewall (LSP_FIREWALL).

Si un LSP no tiene establecido una categoría, se considera que está 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 WSCSetProviderInfo32 . Si un usuario llama a WSCSetProviderInfo32 que no es miembro del grupo Administradores, se producirá un error en la llamada de 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 que ha iniciado sesión como miembro del grupo Administradores que no sea el administrador integrado ejecuta esta función, se producirá un error en esta llamada 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 inició sesión como miembro del grupo Administradores distinto del 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

Requisito Value
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 aplicaciones y proveedores de servicios en capas

WSAProtocol_Info

WSCGetApplicationCategory

WSCGetProviderInfo32

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE