Partager via


WSCWriteProviderOrder, fonction (sporder.h)

La fonction WSCWriteProviderOrder est utilisée pour réorganiser les fournisseurs de transport disponibles. L’ordre des protocoles détermine la priorité d’un protocole lorsqu’il est énuméré ou sélectionné pour une utilisation.

Syntaxe

int WSCWriteProviderOrder(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

Paramètres

[in] lpwdCatalogEntryId

Pointeur vers un tableau d’éléments CatalogEntryId trouvés dans la structure WSAPROTOCOL_INFO . L’ordre des éléments CatalogEntryId est le nouvel ordre de priorité pour les protocoles.

[in] dwNumberOfEntries

Nombre d’éléments dans le tableau lpwdCatalogEntryId .

Valeur retournée

La fonction retourne ERROR_SUCCESS (zéro) si la routine réussit. Sinon, elle retourne un code d’erreur spécifique.

Code d'erreur Signification
WSAEINVAL
Un ou plusieurs arguments ne sont pas valides, aucune action n’a été effectuée.
WSANO_RECOVERY
Une erreur non récupérable s’est produite. Cette erreur est retournée dans plusieurs conditions, notamment : l’utilisateur n’a pas les privilèges d’administration requis 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.
WSA_NOT_ENOUGH_MEMORY
La mémoire disponible était insuffisante. Cette erreur est retournée lorsque la mémoire est insuffisante pour allouer une nouvelle entrée de catalogue.
(autre)
La routine peut retourner n’importe quel code d’erreur du Registre.

Remarques

L’ordre dans lequel les fournisseurs de services de transport sont initialement installés régit l’ordre dans lequel ils sont énumérés via WSCEnumProtocols à l’interface du fournisseur de services ou via WSAEnumProtocols à l’interface de l’application. Plus important encore, cet ordre régit également l’ordre dans lequel les protocoles et les fournisseurs de services sont pris en compte lorsqu’un client demande la création d’un socket en fonction de sa famille d’adresses, de son type et de son identificateur de protocole.

Windows Sockets 2 inclut une application appelée Sporder.exe qui permet au catalogue des protocoles installés d’être réorganisé de manière interactive une fois que les protocoles ont déjà été installés. Windows Sockets 2 inclut également une DLL auxiliaire ,Sporder.dll qui exporte cette interface procédurale pour réorganiser les protocoles. Cette interface peut être importée en établissant une liaison avec Sporder.lib.

Voici des scénarios dans lesquels la fonction WSCWriteProviderOrder peut échouer :

  • Le paramètre dwNumberOfEntries n’est pas égal au nombre de fournisseurs de services inscrits.
  • LpwdCatalogEntryId contient un identificateur de catalogue non valide.
  • LpwdCatalogEntryId ne contient pas tous les identificateurs de catalogue valides une seule fois.
  • La routine n’est pas en mesure d’accéder au Registre pour une raison quelconque (par exemple, des autorisations utilisateur insuffisantes).
  • Un autre processus (ou thread) appelle actuellement la fonction.

En cas de réussite, WSCWriteProviderOrder tente d’alerter toutes les applications intéressées qui se sont inscrites pour la notification de la modification en appelant WSAProviderConfigChange.

La fonction WSCWriteProviderOrder ne peut être appelée que par un utilisateur connecté en tant que membre du groupe Administrateurs. Si WSCWriteProviderOrder est appelé par un utilisateur qui n’est pas membre du groupe Administrateurs, l’appel de fonction échoue et WSANO_RECOVERY est retourné. Pour les ordinateurs s’exécutant sur 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 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 ensuite exécuter l’application dans un interpréteur de commandes amélioré en tant qu’administrateur intégré (administrateur d’exécution) pour que cette fonction réussisse.

Configuration requise

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

Voir aussi

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols