Compartir a través de


Función WSCSetProviderInfo (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 **WSCSetProviderInfo** establece el valor de datos de la clase de información especificada para un proveedor de servicios en capas (LSP).

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
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
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.
  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 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.

**Nota** La característica TDI está en desuso y se quitará en versiones futuras de Microsoft Windows. En función de cómo use TDI, use el kernel winsock (WSK) o la plataforma de filtrado de Windows (PMA). Para obtener más información sobre EL PMA y WSK, consulte Plataforma de filtrado de Windows y Kernel winsock. Para obtener una entrada de blog de Redes principales de Windows sobre WSK y TDI, consulte Introducción al kernel de Winsock (WSK).
 

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