Condividi tramite


Funzione SetAddrInfoExA (ws2tcpip.h)

La funzione SetAddrInfoEx registra o deregista un nome, un nome del servizio e gli indirizzi associati con un provider di spazi dei nomi specifico.

Sintassi

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
);

Parametri

[in] pName

Puntatore a una stringa con terminazione NULL contenente un nome in base ai quali gli indirizzi devono essere registrati o deregisterati. Interpretazione di questo parametro specifico per il provider dello spazio dei nomi.

[in] pServiceName

Puntatore a una stringa con terminazione NULL facoltativa contenente il nome del servizio associato al nome registrato. L'interpretazione di questo parametro è specifica per il provider di spazi dei nomi.

[in, out] pAddresses

Puntatore a un elenco facoltativo di indirizzi da registrare con il provider di spazi dei nomi.

[in] dwAddressCount

Numero di indirizzi passati nel parametro pAddresses . Se questo parametro è zero, il parametro pName viene deregisterato dal provider dello spazio dei nomi.

[in, optional] lpBlob

Puntatore facoltativo ai dati usati per impostare informazioni sullo spazio dei nomi specifiche del provider associate al parametro pName oltre a un elenco di indirizzi. Tutte le informazioni che non possono essere passate nel parametro pAddresses possono essere passate nel parametro lpBlob . Il formato di queste informazioni è specifico per il provider di spazi dei nomi.

[in] dwFlags

Set di flag che controllano il modo in cui i parametri pName e pServiceName devono essere registrati con il provider dello spazio dei nomi. L'interpretazione di queste informazioni è specifica per il provider di spazi dei nomi.

[in] dwNameSpace

Identificatore dello spazio dei nomi che determina il provider di spazi dei nomi con cui registrare queste informazioni. Il passaggio di un identificatore specifico dello spazio dei nomi comporta la registrazione di queste informazioni solo con i provider di spazi dei nomi che supportano lo spazio dei nomi specificato. Se si specifica NS_ALL, le informazioni verranno registrate con tutti i provider di spazi dei nomi installati e attivi.

Le opzioni per il parametro dwNameSpace sono elencate nel file di inclusione Winsock2.h . Diversi provider di spazi dei nomi sono inclusi in Windows Vista e versioni successive. Altri provider di spazi dei nomi possono essere installati, pertanto i valori possibili seguenti sono solo quelli comunemente disponibili. Molti altri sono possibili.

Valore Significato
NS_ALL
Tutti gli spazi dei nomi installati e attivi.
NS_BTH
Spazio dei nomi Bluetooth. Questo identificatore dello spazio dei nomi è supportato in Windows Vista e versioni successive.
NS_DNS
Spazio dei nomi DNS (Domain Name System).
NS_EMAIL
Spazio dei nomi di posta elettronica. Questo identificatore dello spazio dei nomi è supportato in Windows Vista e versioni successive.
NS_NLA
Spazio dei nomi NLA (Network Location Awareness). Questo identificatore dello spazio dei nomi è supportato in Windows XP e versioni successive.
NS_PNRPNAME
Spazio dei nomi peer-to-peer per un nome peer specifico. Questo identificatore dello spazio dei nomi è supportato in Windows Vista e versioni successive.
NS_PNRPCLOUD
Spazio dei nomi peer-to-peer per una raccolta di nomi peer. Questo identificatore dello spazio dei nomi è supportato in Windows Vista e versioni successive.

[in, optional] lpNspId

Puntatore a un GUID facoltativo di un provider di spazi dei nomi specifico per registrare queste informazioni nel caso in cui più provider di spazi dei nomi siano registrati in un singolo spazio dei nomi, ad esempio NS_DNS. Il passaggio del GUID per un provider di spazi dei nomi specifico comporta la registrazione delle informazioni con solo il provider di spazi dei nomi specificato. La funzione WSAEnumNameSpaceProviders può essere chiamata per recuperare il GUID per un provider di spazi dei nomi.

[in, optional] timeout

Parametro facoltativo che indica il tempo, in millisecondi, per attendere una risposta dal provider dello spazio dei nomi prima di interrompere la chiamata. Questo parametro è attualmente riservato e deve essere impostato su NULL poiché un'opzione di timeout non è supportata.

[in, optional] lpOverlapped

Puntatore facoltativo a una struttura sovrapposta usata per l'operazione asincrona. Questo parametro è attualmente riservato e deve essere impostato su NULL perché le operazioni asincrone non sono supportate.

[in, optional] lpCompletionRoutine

Puntatore facoltativo a una funzione da richiamare al completamento corretto per le operazioni asincrone. Questo parametro è attualmente riservato e deve essere impostato su NULL perché le operazioni asincrone non sono supportate.

[out, optional] lpNameHandle

Puntatore facoltativo usato solo per le operazioni asincrone. Questo parametro è attualmente riservato e deve essere impostato su NULL perché le operazioni asincrone non sono supportate.

Valore restituito

In caso di esito positivo, SetAddrInfoEx restituisce NO_ERROR (0). L'errore restituisce un codice di errore Windows Sockets diverso da zero, come indicato nei codici di errore di Windows Sockets.

Codice di errore Significato
WSANOTINITIALISED
Prima di usare questa funzione, è necessario eseguire una chiamata WSAStartup riuscita.
WSATRY_AGAIN
Si è verificato un errore temporaneo nella risoluzione dei nomi.
WSAEINVAL
È stato fornito un parametro non valido. Questo errore viene restituito se uno dei parametri riservati non è NULL.
WSAENOBUFS
Spazio buffer insufficiente disponibile.
WSANO_RECOVERY
Si è verificato un errore non recuperabile nella risoluzione dei nomi.
WSA_NOT_ENOUGH_MEMORY
Si è verificato un errore di allocazione della memoria.

Commenti

La funzione SetAddrInfoEx fornisce un metodo indipendente dal protocollo per registrare o annullare la registrazione di un nome e uno o più indirizzi con un provider di spazi dei nomi. Il provider di spazi dei nomi NS_EMAIL in Windows Vista e versioni successive supporta la registrazione e la registrazione degli indirizzi. I provider di spazi dei nomi predefiniti NS_DNS, NS_PNRPNAME e NS_PNRPNAME non supportano attualmente la registrazione dei nomi.

Se la funzione SetAddrInfoEx viene chiamata con NS_ALL impostata come parametro dwNameSpace e il parametro lpNspId non specificato, SetAddrInfoEx tenterà di registrare o annullare la registrazione del nome e degli indirizzi associati con tutti gli spazi dei nomi installati e attivi. La funzione SetAddrInfoEx restituirà l'esito positivo se uno dei provider di spazi dei nomi è stato registrato o deregiregistrato il nome, ma non sarà presente alcuna indicazione del provider di spazi dei nomi che ha avuto esito positivo o di quelli che hanno avuto esito negativo nella richiesta.

Quando viene definito UNICODE o _UNICODE, SetAddrInfoEx viene definito su SetAddrInfoExW, la versione Unicode di questa funzione. I parametri stringa vengono definiti per il tipo di dati PWSTR .

Quando UNICODE o _UNICODE non è definito, SetAddrInfoEx viene definito su SetAddrInfoExA, la versione ANSI di questa funzione. I parametri stringa sono del tipo di dati PCSTR .

Le informazioni registrate con un provider di spazi dei nomi possono essere restituite chiamando le funzioni GetAddrInfoEx, getaddrinfo o GetAddrInfoW. La funzione GetAddrInfoEx è una versione avanzata delle funzioni getaddrinfo e GetAddrInfoW .

In Windows Vista e versioni successive, quando SetAddrInfoEx viene chiamato da un servizio, se l'operazione è il risultato di un processo utente che chiama il servizio, il servizio deve rappresentare l'utente. Si tratta di consentire l'applicazione corretta dei compartimenti di sicurezza e routing.

Windows 8.1 e Windows Server 2012 R2: la funzione SetAddrInfoExW è supportata per le app di Windows Store in Windows 8.1, Windows Server 2012 R2 e versioni successive.

Nota

L'intestazione ws2tcpip.h definisce SetAddrInfoEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1, Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione ws2tcpip.h
Libreria Ws2_32.lib
DLL Ws2_32.dll

Vedi anche

GetAddrInfoEx

GetAddrInfoW

WSAEnumNameSpaceProviders

WSAGetLastError

Codici di errore di Windows Sockets

getaddrinfo