Función WSCGetProviderInfo (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 **WSCGetProviderInfo** recupera los datos asociados a una clase de información para un proveedor de servicios en capas (LSP).

Sintaxis

int WSCGetProviderInfo(
  [in]      LPGUID                 lpProviderId,
  [in]      WSC_PROVIDER_INFO_TYPE InfoType,
  [out]     PBYTE                  Info,
  [in, out] 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 solicitada para esta entrada de protocolo LSP.

[out] Info

Puntero a un búfer para recibir los datos de la clase de información para la entrada de protocolo LSP solicitada. Si este parámetro es NULL, WSCGetProviderInfo devuelve un error y el tamaño necesario para este búfer se devuelve en el parámetro InfoSize .

[in, out] InfoSize

Tamaño, en bytes, del búfer al que apunta el parámetro Info . Si el parámetro Info es NULL, WSCGetProviderInfo devuelve un error y el parámetro InfoSize recibirá el tamaño del búfer necesario.

[in] Flags

Marcas usadas para modificar el comportamiento de la llamada de función WSCGetProviderInfo .

[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, WSCGetProviderInfo 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.
WSAEINVALIDPROVIDER
No se encontró la entrada de protocolo para el lpProviderId especificado.
WSANO_RECOVERY
Error irrecuperable. Este error se devuelve en varias condiciones, incluido lo siguiente: el usuario carece de los privilegios administrativos necesarios para acceder al 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.

Comentarios

WSCGetProviderInfo se usa para recuperar datos de clase de información para un proveedor de servicios en capas. Cuando el parámetro InfoType se establece en ProviderInfoLspCategories, si se ejecuta correctamente WSCGetProviderInfo , se devuelve con el parámetro Info establecido con las marcas de categoría LSP adecuadas implementadas por el LSP.

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 para transferir datos a las funciones SPI. 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, un LSP de firewall o seguridad podría pertenecer a las categorías inspector (LSP_INSPECTOR) y firewall (LSP_FIREWALL).

Si un LSP no tiene un conjunto de categorías, 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).

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

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE