Fonction WSCGetProviderInfo (ws2spi.h)

**Remarque** Les fournisseurs de services en couches sont déconseillés. À compter de Windows 8 et Windows Server 2012, utilisez la plateforme de filtrage Windows.
 
La fonction **WSCGetProviderInfo** récupère les données associées à une classe d’informations pour un fournisseur de services en couches (LSP).

Syntaxe

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
);

Paramètres

[in] lpProviderId

Pointeur vers un identificateur global unique (GUID) pour le fournisseur.

[in] InfoType

Classe d’informations demandée pour cette entrée de protocole LSP.

[out] Info

Pointeur vers une mémoire tampon pour recevoir les données de classe d’informations pour l’entrée de protocole LSP demandée. Si ce paramètre a la valeur NULL, WSCGetProviderInfo retourne l’échec et la taille requise pour cette mémoire tampon est retournée dans le paramètre InfoSize .

[in, out] InfoSize

Taille, en octets, de la mémoire tampon pointée vers le paramètre Info . Si le paramètre Info a la valeur NULL, WSCGetProviderInfo retourne l’échec et le paramètre InfoSize reçoit la taille de la mémoire tampon requise.

[in] Flags

Indicateurs utilisés pour modifier le comportement de l’appel de fonction WSCGetProviderInfo .

[out] lpErrno

Pointeur vers le code d’erreur si la fonction échoue.

Valeur retournée

Si aucune erreur ne se produit, WSCGetProviderInfo retourne ERROR_SUCCESS (zéro). Sinon, il retourne SOCKET_ERROR, et un code d’erreur spécifique est retourné dans le paramètre lpErrno .

Code d'erreur Signification
ERROR_CALL_NOT_IMPLEMENTED
L’appel n’est pas implémenté. Cette erreur est retournée si **ProviderInfoAudit** est spécifié dans le paramètre InfoType .
WSAEFAULT
Un ou plusieurs des arguments ne se trouve pas dans une partie valide de l’espace d’adressage utilisateur.
WSAEINVAL
Un ou plusieurs arguments ne sont pas valides.
WSAEINVALIDPROVIDER
L’entrée de protocole est introuvable pour le lpProviderId spécifié.
WSANO_RECOVERY
Une erreur irrécupérable s’est produite. Cette erreur est retournée dans plusieurs conditions, notamment : l’utilisateur n’a pas les privilèges d’administration nécessaires pour accéder au registre Winsock ou un échec s’est produit lors de l’ouverture d’une entrée de catalogue Winsock.
WSA_NOT_ENOUGH_MEMORY
La mémoire disponible était insuffisante. Cette erreur est retournée quand la mémoire est insuffisante pour allouer une nouvelle entrée de catalogue.

Remarques

WSCGetProviderInfo est utilisé pour récupérer des données de classe d’informations pour un fournisseur de services en couches. Lorsque le paramètre InfoType est défini sur ProviderInfoLspCategories, en cas de réussite, WSCGetProviderInfo retourne avec le jeu de paramètres Info avec les indicateurs de catégorie LSP appropriés implémentés par le fournisseur de services partagés.

Winsock 2 prend en charge les protocoles en couches. Un protocole en couches implémente uniquement des fonctions de communication de niveau supérieur, tout en s’appuyant sur une pile de transport sous-jacente pour l’échange réel de données avec un point de terminaison distant. Un exemple de protocole en couches ou de fournisseur de services en couches serait une couche de sécurité qui ajoute un protocole au processus d’établissement de la connexion afin d’effectuer l’authentification et d’établir un schéma de chiffrement mutuellement convenu. Un tel protocole de sécurité nécessite généralement les services d’un protocole de transport fiable sous-jacent, tel que TCP ou SPX. Le terme protocole de base fait référence à un protocole tel que TCP ou SPX capable d’effectuer des communications de données avec un point de terminaison distant. Le terme protocole en couches est utilisé pour décrire un protocole qui ne peut pas être autonome. Une chaîne de protocole est alors définie comme un ou plusieurs protocoles en couches enchaînés et ancrés par un protocole de base. Un protocole de base a le membre ChainLen de la structure WSAProtocol_Info défini sur BASE_PROTOCOL qui est défini sur 1. Un protocole en couches a le membre ChainLen de la structure WSAPROTOCOL_INFO défini sur LAYERED_PROTOCOL qui est défini sur zéro. Une chaîne de protocole a le membre ChainLen de la structure WSAPROTOCOL_INFO défini sur supérieur à 1.

Lors de l’initialisation LSP, le fournisseur de services LSP doit fournir des pointeurs vers un certain nombre de fonctions Winsock SPI. Ces fonctions seront appelées pendant le traitement normal par la couche directement au-dessus du LSP (soit un autre LSP ou Ws2_32.DLL).

Un fournisseur de services LSP qui implémente un système de fichiers installable (IFS) peut choisir de manière sélective de fournir des pointeurs vers des fonctions qui sont implémentées par lui-même, ou de renvoyer les pointeurs fournis par la couche située directement sous le LSP. Les LSP non-IFS, car ils fournissent leurs propres handles, doivent implémenter toutes les fonctions Winsock SPI. Cela est dû au fait que chaque SPI aura besoin du fournisseur de services pour mapper tous les handles de socket qu’il a créés au handle de socket du fournisseur inférieur (soit un autre LSP ou le protocole de base).

Toutefois, tous les fournisseurs de services LSP effectuent leur travail spécifique en effectuant un traitement supplémentaire uniquement sur un sous-ensemble des fonctions SPI winsock.

Il est possible de définir des catégories LSP en fonction du sous-ensemble de fonctions SPI qu’un LSP implémente et de la nature du traitement supplémentaire effectué pour chacune de ces fonctions.

En classant les fournisseurs de services LSP et en classant les applications qui utilisent des sockets Winsock, il devient possible de déterminer de manière sélective si un fournisseur de services partagés doit être impliqué dans un processus donné au moment de l’exécution.

Sur Windows Vista et versions ultérieures, un fournisseur de services partagés peut être classé en fonction de la façon dont il interagit avec les appels et les données des sockets Windows. Une catégorie LSP est un groupe identifiable de comportements sur un sous-ensemble de fonctions Winsock SPI. Par exemple, un filtre de contenu HTTP est classé en tant qu’inspecteur de données (catégorie LSP_INSPECTOR). La catégorie LSP_INSPECTOR inspecte (mais ne modifie pas) les paramètres pour les fonctions SPI de transfert de données. Une application peut interroger la catégorie d’un LSP et choisir de ne pas charger le LSP en fonction de la catégorie LSP et de l’ensemble de catégories LSP autorisées de l’application.

Le tableau suivant répertorie les catégories dans lesquelles un fournisseur de services LSP peut être classé.

Catégorie LSP Description
**LSP_CRYPTO_COMPRESS** Le LSP est un fournisseur de chiffrement ou de compression de données.
**LSP_FIREWALL** Le fournisseur de services LSP est un fournisseur de pare-feu.
**LSP_LOCAL_CACHE** Le fournisseur de services LSP est un fournisseur de cache local.
**LSP_INBOUND_MODIFY** Le fournisseur de services LSP modifie les données entrantes.
**LSP_INSPECTOR** Le fournisseur de services LSP inspecte ou filtre les données.
**LSP_OUTBOUND_MODIFY** Le LSP modifie les données sortantes.
**LSP_PROXY** Le fournisseur de services LSP agit comme un proxy et redirige les paquets.
**LSP_REDIRECTOR** Le fournisseur de services LSP est un redirecteur réseau.
**LSP_SYSTEM** Le LSP est acceptable pour une utilisation dans les services et les processus système.
 

Un fournisseur de services LSP peut appartenir à plusieurs catégories. Par exemple, un pare-feu/LSP de sécurité peut appartenir à la fois aux catégories inspecteur (LSP_INSPECTOR) et pare-feu (LSP_FIREWALL).

Si un fournisseur de services LSP n’a pas d’ensemble de catégories, il est considéré comme faisant partie de la catégorie Tous les autres. Cette catégorie LSP ne sera pas chargée dans les services ou les processus système (par exemple, lsass, winlogon et de nombreux processus svchost).

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête ws2spi.h
Bibliothèque Ws2_32.lib
DLL Ws2_32.dll

Voir aussi

Catégorisation des applications et des fournisseurs de services en couches

WSAProtocol_Info

WSCGetApplicationCategory

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE