Fonction WSCUpdateProvider (ws2spi.h)
La fonction WSCUpdateProvider modifie le fournisseur de transport spécifié dans la base de données de configuration système.
Syntaxe
int WSCUpdateProvider(
[in] LPGUID lpProviderId,
[in] const WCHAR *lpszProviderDllPath,
[in] const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
[in] DWORD dwNumberOfEntries,
[out] LPINT lpErrno
);
Paramètres
[in] lpProviderId
Pointeur vers un identificateur global unique (GUID) pour le fournisseur.
[in] lpszProviderDllPath
Pointeur vers une chaîne Unicode qui contient le chemin de chargement de la DLL 64 bits du fournisseur. Cette chaîne respecte les règles habituelles pour la résolution de chemin d’accès et peut contenir des chaînes d’environnement incorporées (telles que %SystemRoot%). Ces chaînes d’environnement sont développées lorsque le Ws2_32.dll doit ensuite charger la DLL du fournisseur pour le compte d’une application. Une fois les chaînes d’environnement incorporées développées, le Ws2_32.dll transmet la chaîne obtenue à la fonction LoadLibrary qui charge le fournisseur en mémoire. Pour plus d’informations, consultez LoadLibrary.
[in] lpProtocolInfoList
Pointeur vers un tableau de structures WSAProtocol_Info . Chaque structure spécifie ou modifie un protocole, une famille d’adresses et un type de socket pris en charge par le fournisseur.
[in] dwNumberOfEntries
Nombre d’entrées dans le tableau lpProtocolInfoList .
[out] lpErrno
Pointeur vers le code d’erreur si la fonction échoue.
Valeur retournée
Si aucune erreur ne se produit, WSCUpdateProvider retourne 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 |
---|---|
Un ou plusieurs des arguments ne se trouvent pas dans une partie valide de l’espace d’adressage utilisateur. | |
Un ou plusieurs arguments ne sont pas valides. | |
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 écrire dans le registre Winsock, ou un échec s’est produit lors de l’ouverture ou de l’écriture d’une entrée de catalogue. | |
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
La fonction WSCUpdateProvider modifie les informations de configuration des Sockets Windows 2 pour le fournisseur spécifié. Elle s’applique aux protocoles de base, aux protocoles en couches et aux chaînes de protocoles.
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 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.
En cas de réussite, WSCUpdateProvider tente d’alerter toutes les applications intéressées qui se sont inscrites pour la notification de la modification en appelant WSAProviderConfigChange.
La fonction WSCUpdateProvider ne peut être appelée que par un utilisateur connecté en tant que membre du groupe Administrateurs. Si WSCUpdateProvider est appelé par un utilisateur qui n’est pas membre du groupe Administrateurs, l’appel de fonction échoue.
Pour les ordinateurs exécutant Windows Vista ou Windows Server 2008, cette fonction peut également échouer en raison du contrôle de compte d’utilisateur (UAC). Si une application qui contient cette fonction est exécutée par un utilisateur connecté en tant que membre du groupe Administrateurs autre que l’administrateur intégré, cet appel échoue, sauf si l’application a été marquée dans le fichier manifeste avec un paramètre requestedExecutionLevel défini sur requireAdministrator. Si l’application sur Windows Vista ou Windows Server 2008 ne dispose pas de ce fichier manifeste, un utilisateur connecté en tant que membre du groupe Administrateurs autre que l’administrateur intégré doit alors exécuter l’application dans un interpréteur de commandes amélioré en tant qu’administrateur intégré (administrateur RunAs) pour que cette fonction réussisse.
Toute installation de fichier ou configuration spécifique au fournisseur de services doit être effectuée par l’appelant.
Spécifications
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | ws2spi.h |
Bibliothèque | Ws2_32.lib |
DLL | Ws2_32.dll |