Función WSCGetProviderInfo32 (ws2spi.h)
Sintaxis
int WSCGetProviderInfo32(
[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, WSCGetProviderInfo32 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, WSCGetProviderInfo32 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 WSCGetProviderInfo32 .
[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, WSCGetProviderInfo32 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. | |
No se encontró la entrada de protocolo para el lpProviderId especificado. | |
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. | |
No había suficiente memoria disponible. Este error se devuelve cuando no hay memoria suficiente para asignar una nueva entrada de catálogo. |
Observaciones
WSCGetProviderInfo32 es una versión estricta de 32 bits de WSCGetProviderInfo. En un equipo de 64 bits, todas las llamadas no son 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 específicas de 32 bits son las mismas que sus equivalentes nativos.
WSCGetProviderInfo32 se usa para recuperar datos de clase de información para una entrada de protocolo en un proveedor de servicios en capas de 32 bits. Cuando el parámetro InfoType se establece en ProviderInfoLspCategories, cuando el parámetro WSCGetProviderInfo32 se devuelve correctamente con el parámetro Info establecido con las marcas de categoría LSP adecuadas implementadas por LSP de 32 bits.
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, 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
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