Función WSCWriteProviderOrder32 (sporder.h)

La función WSCWriteProviderOrder32 se usa para reordenar los proveedores de transporte de 32 bits disponibles. El orden de los protocolos determina la prioridad de un protocolo al enumerarse o seleccionarse para su uso.

Nota Esta llamada es una versión estricta de 32 bits de WSCWriteProviderOrder para su uso en plataformas de 64 bits. Se proporciona para permitir que los procesos de 64 bits modifiquen los catálogos de 32 bits.
 

Sintaxis

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

Parámetros

[in] lpwdCatalogEntryId

Puntero a una matriz de elementos CatalogEntryId que se encuentran en la estructura WSAPROTOCOL_INFO . El orden de los elementos CatalogEntryId es el nuevo orden de prioridad para los protocolos.

[in] dwNumberOfEntries

Número de elementos de la matriz lpwdCatalogEntryId .

Valor devuelto

La función devuelve ERROR_SUCCESS (cero) si la rutina se realiza correctamente. De lo contrario, devuelve un código de error específico.

Código de error Significado
WSAEINVAL
Uno o varios de los argumentos no son válidos, no se realizó ninguna acción.
WSANO_RECOVERY
Error irrecuperable. Este error se devuelve en varias condiciones, incluidos los siguientes: el usuario carece de los privilegios administrativos necesarios para escribir en el registro winsock o se produjo un error al abrir o escribir una entrada de catálogo.
WSA_NOT_ENOUGH_MEMORY
No había suficiente memoria disponible. Este error se devuelve cuando no hay memoria suficiente para asignar una nueva entrada de catálogo.
(otro)
La rutina puede devolver cualquier código de error del Registro.

Comentarios

La función WSCWriteProviderOrder32 es una versión estricta de 32 bits de la función WSCWriteProviderOrder . 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.

El orden en que los proveedores de servicios de transporte se instalan inicialmente rige el orden en el que se enumeran a través de WSCEnumProtocols32 en la interfaz del proveedor de servicios o a través de WSAEnumProtocols en la interfaz de la aplicación. Lo más importante es que este orden también rige el orden en el que se consideran protocolos y proveedores de servicios cuando un cliente solicita la creación de un socket en función de su familia de direcciones, tipo e identificador de protocolo.

Windows Sockets 2 incluye una aplicación denominada Sporder.exe que permite reordenar el catálogo de protocolos instalados de forma interactiva después de que ya se hayan instalado los protocolos. Windows Sockets 2 también incluye un archivo DLL auxiliar, Sporder.dll que exporta esta interfaz de procedimientos para reordenar protocolos. Esta interfaz se puede importar mediante la vinculación con Sporder.lib.

A continuación se muestran escenarios en los que se podría producir un error en la función WSCWriteProviderOrder32 :

  • El parámetro dwNumberOfEntries no es igual al número de proveedores de servicios registrados.
  • LpwdCatalogEntryId contiene un identificador de catálogo no válido.
  • LpwdCatalogEntryId no contiene todos los identificadores de catálogo válidos exactamente una vez.
  • La rutina no puede acceder al Registro por algún motivo (por ejemplo, permisos de usuario inadecuados).
  • Otro proceso (o subproceso) está llamando actualmente a la función .

Si se ejecuta correctamente, WSCWriteProviderOrder32 intentará alertar a todas las aplicaciones interesadas que se hayan registrado para notificar el cambio mediante una llamada a WSAProviderConfigChange.

Un usuario que ha iniciado sesión como miembro del grupo Administradores solo puede llamar a la función WSCWriteProviderOrder32 . Si un usuario que no es miembro del grupo Administradores llama a WSCWriteProviderOrder32 , se producirá un error en la llamada de función y se devolverá WSANO_RECOVERY . En el caso de los equipos que se ejecutan en Windows Vista o Windows Server 2008, esta función también puede producir un error debido al control de cuentas de usuario (UAC). Si un usuario inicia sesión como miembro del grupo Administradores que no sea el administrador integrado, esta llamada producirá un error a menos que la aplicación se haya marcado en el archivo de manifiesto con un valor requestedExecutionLevel establecido en requireAdministrator. Si la aplicación en Windows Vista o Windows Server 2008 carece de este archivo de manifiesto, un usuario que ha iniciado sesión como miembro del grupo Administradores que no sea el administrador integrado debe ejecutar la aplicación en un shell mejorado como administrador integrado (administrador de RunAs) para que esta función se realice correctamente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP Professional x64 Edition [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008, Windows Server 2003 x64 Edition [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado sporder.h
Library Sporder.lib
Archivo DLL Ws2_32.dll

Consulte también

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32