Compartir a través de


Función SetAddrInfoExA (ws2tcpip.h)

La función SetAddrInfoEx registra o anula el registro de un nombre, un nombre de servicio y direcciones asociadas con un proveedor de espacios de nombres específico.

Sintaxis

INT WSAAPI SetAddrInfoExA(
  [in]            PCSTR                              pName,
  [in]            PCSTR                              pServiceName,
  [in, out]       SOCKET_ADDRESS                     *pAddresses,
  [in]            DWORD                              dwAddressCount,
  [in, optional]  LPBLOB                             lpBlob,
  [in]            DWORD                              dwFlags,
  [in]            DWORD                              dwNameSpace,
  [in, optional]  LPGUID                             lpNspId,
  [in, optional]  timeval                            *timeout,
  [in, optional]  LPOVERLAPPED                       lpOverlapped,
  [in, optional]  LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
  [out, optional] LPHANDLE                           lpNameHandle
);

Parámetros

[in] pName

Puntero a un cadena terminada en NULLque contiene un nombre bajo el que se van a registrar o anular el registro de direcciones. Interpretación de este parámetro específico del proveedor de espacios de nombres.

[in] pServiceName

Puntero a un opcionalcadena terminada en NULL que contiene el nombre del servicio asociado al nombre que se está registrando. La interpretación de este parámetro es específica del proveedor de espacios de nombres.

[in, out] pAddresses

Puntero a una lista opcional de direcciones para registrarse con el proveedor de espacios de nombres.

[in] dwAddressCount

Número de direcciones pasadas en parámetro pAddresses. Si este parámetro es cero, el parámetro pName se anula del registro del proveedor de espacios de nombres.

[in, optional] lpBlob

Puntero opcional a los datos que se usan para establecer información de espacio de nombres específica del proveedor asociada al parámetro pName más allá de una lista de direcciones. Cualquier información que no se pueda pasar en el parámetro pAddresses se puede pasar en el parámetro lpBlob. El formato de esta información es específico del proveedor de espacios de nombres.

[in] dwFlags

Conjunto de marcas que controlan cómo se van a registrar los parámetros pName y pServiceName con el proveedor de espacios de nombres. La interpretación de esta información es específica del proveedor de espacios de nombres.

[in] dwNameSpace

Identificador de espacio de nombres que determina con qué proveedor de espacios de nombres se va a registrar esta información. Si se pasa un identificador de espacio de nombres específico, solo se registrará esta información con los proveedores de espacios de nombres que admiten el espacio de nombres especificado. Al especificar NS_ALL se registrará la información con todos los proveedores de espacios de nombres instalados y activos.

Las opciones del parámetro dwNameSpace de se muestran en el archivo de inclusión de Winsock2.h. Varios proveedores de espacios de nombres se incluyen con Windows Vista y versiones posteriores. Se pueden instalar otros proveedores de espacios de nombres, por lo que los siguientes valores posibles son solo los disponibles con frecuencia. Muchos otros son posibles.

Valor Significado
NS_ALL
Todos los espacios de nombres instalados y activos.
NS_BTH
Espacio de nombres Bluetooth. Este identificador de espacio de nombres se admite en Windows Vista y versiones posteriores.
NS_DNS
Espacio de nombres del sistema de nombres de dominio (DNS).
NS_EMAIL
Espacio de nombres de correo electrónico. Este identificador de espacio de nombres se admite en Windows Vista y versiones posteriores.
NS_NLA
Espacio de nombres de reconocimiento de ubicación de red (NLA). Este identificador de espacio de nombres se admite en Windows XP y versiones posteriores.
NS_PNRPNAME
Espacio de nombres punto a punto para un nombre del mismo nivel específico. Este identificador de espacio de nombres se admite en Windows Vista y versiones posteriores.
NS_PNRPCLOUD
Espacio de nombres punto a punto para una colección de nombres del mismo nivel. Este identificador de espacio de nombres se admite en Windows Vista y versiones posteriores.

[in, optional] lpNspId

Puntero a un GUID opcional de un proveedor de espacio de nombres específico con el que registrar esta información en en caso de que varios proveedores de espacios de nombres estén registrados en un único espacio de nombres, como NS_DNS. Si se pasa el GUID de un proveedor de espacio de nombres específico, la información que se registra solo con el proveedor de espacios de nombres especificado. Se puede llamar a la función WSAEnumNameSpaceProviders para recuperar el GUID de un proveedor de espacios de nombres.

[in, optional] timeout

Parámetro opcional que indica el tiempo, en milisegundos, para esperar una respuesta del proveedor de espacios de nombres antes de anular la llamada. Este parámetro está reservado actualmente y debe establecerse en NULL, ya que no se admite una opción de tiempo de espera de .

[in, optional] lpOverlapped

Puntero opcional a una estructura superpuesta utilizada para la operación asincrónica. Este parámetro está reservado actualmente y debe establecerse en NULL, ya que no se admiten operaciones asincrónicas.

[in, optional] lpCompletionRoutine

Puntero opcional a una función que se va a invocar tras completarse correctamente para las operaciones asincrónicas. Este parámetro está reservado actualmente y debe establecerse en NULL, ya que no se admiten operaciones asincrónicas.

[out, optional] lpNameHandle

Puntero opcional que solo se usa para operaciones asincrónicas. Este parámetro está reservado actualmente y debe establecerse en NULL, ya que no se admiten operaciones asincrónicas.

Valor devuelto

Si se ejecuta correctamente, SetAddrInfoEx devuelve NO_ERROR (0). Error devuelve un código de error que no es cero de Windows Sockets, como se encuentra en los códigos de error de Windows Sockets .

Código de error Significado
WSANOTINITIALISED
Se debe realizar una llamada de WSAStartup correcta antes de usar esta función.
WSATRY_AGAIN
Error temporal en la resolución de nombres.
WSAEINVAL
Se proporcionó un parámetro no válido. Este error se devuelve si alguno de los parámetros reservados no es NULL.
WSAENOBUFS
No hay suficiente espacio de búfer disponible.
WSANO_RECOVERY
Error irrecuperable en la resolución de nombres.
WSA_NOT_ENOUGH_MEMORY
Error de asignación de memoria.

Observaciones

La función SetAddrInfoEx proporciona un método independiente del protocolo para registrar o anular el registro de un nombre y una o varias direcciones con un proveedor de espacios de nombres. El NS_EMAIL proveedor de espacios de nombres en Windows Vista y versiones posteriores admite el registro y la desregistración de direcciones. Los proveedores de espacios de nombres predeterminados NS_DNS, NS_PNRPNAME y NS_PNRPNAME no admiten actualmente el registro de nombres.

Si se llama a la función SetAddrInfoEx con NS_ALL establecido como parámetro dwNameSpace y el parámetro lpNspId no especificado, SetAddrInfoEx intentará registrar o anular el registro del nombre y las direcciones asociadas con todos los espacios de nombres instalados y activos. La función setAddrInfoEx de devolverá éxito si alguno de los proveedores de espacios de nombres registró o anule correctamente el registro del nombre, pero no habrá ninguna indicación de qué proveedor de espacios de nombres se realizó correctamente o de los que se produjo un error en la solicitud.

Cuando se define o _UNICODE UNICODE, se define SetAddrInfoEx en SetAddrInfoExW, la versión Unicode de esta función. Los parámetros de cadena se definen en el tipo de datos PWSTR.

Cuando no se define o _UNICODE UNICODE, SetAddrInfoEx se define en SetAddrInfoExA, la versión ANSI de esta función. Los parámetros de cadena son del tipo de datos PCSTR.

La información registrada con un proveedor de espacios de nombres se puede devolver llamando a las funcionesgetAddrInfoEx getaddrinfoo getAddrInfoW. La función getAddrInfoEx de es una versión mejorada de la getaddrinfo y funciones de GetAddrInfoW.

En Windows Vista y versiones posteriores, cuando se llama a SetAddrInfoEx desde un servicio, si la operación es el resultado de un proceso de usuario que llama al servicio, el servicio debe suplantar al usuario. Esto es para permitir que se apliquen correctamente los compartimientos de seguridad y enrutamiento.

windows 8.1 y Windows Server 2012 R2: la función SetAddrInfoExW se admite para las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y versiones posteriores.

Nota

El encabezado ws2tcpip.h define SetAddrInfoEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8.1, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de ws2tcpip.h
biblioteca de Ws2_32.lib
DLL de Ws2_32.dll

Consulte también

GetAddrInfoEx

GetAddrInfoW

WSAEnumNameSpaceProviders

WSAGetLastError

códigos de error de Windows Sockets

getaddrinfo