WSCWriteProviderOrder32, fonction (sporder.h)
La fonction WSCWriteProviderOrder32 est utilisée pour réorganiser les fournisseurs de transport 32 bits disponibles. L’ordre des protocoles détermine la priorité d’un protocole lors de l’énumération ou de la sélection pour utilisation.
Syntaxe
int WSCWriteProviderOrder32(
[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, il retourne un code d’erreur spécifique.
Code d'erreur | Signification |
---|---|
Un ou plusieurs arguments ne sont pas valides, aucune action n’a été effectuée. | |
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. | |
|
La routine peut retourner n’importe quel code d’erreur du Registre. |
Remarques
La fonction WSCWriteProviderOrder32 est une version strictement 32 bits de la fonction WSCWriteProviderOrder . Sur un ordinateur 64 bits, tous les appels ne sont pas spécifiquement 32 bits (par exemple, toutes les fonctions qui ne se terminent pas par « 32 ») fonctionnent sur le catalogue 64 bits natif. Les processus qui s’exécutent sur un ordinateur 64 bits doivent utiliser les appels de fonction 32 bits spécifiques pour fonctionner sur un catalogue strictement 32 bits et préserver la compatibilité. Les définitions et la sémantique des appels 32 bits spécifiques sont les mêmes que leurs équivalents natifs.
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 WSCEnumProtocols32 à 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.dllqui 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 WSCWriteProviderOrder32 peut échouer :
- Le paramètre dwNumberOfEntries n’est pas égal au nombre de fournisseurs de services inscrits.
- Le lpwdCatalogEntryId contient un identificateur de catalogue non valide.
- Le 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 inadéquates).
- Un autre processus (ou thread) appelle actuellement la fonction.
En cas de réussite, WSCWriteProviderOrder32 tente d’alerter toutes les applications intéressées qui se sont inscrites pour notification de la modification en appelant WSAProviderConfigChange.
La fonction WSCWriteProviderOrder32 ne peut être appelée que par un utilisateur connecté en tant que membre du groupe Administrateurs. Si WSCWriteProviderOrder32 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 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista, Windows XP Professionnel Édition x64 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008, Windows Server 2003 Édition x64 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | sporder.h |
Bibliothèque | Sporder.lib |
DLL | Ws2_32.dll |