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.
[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 |
---|---|
Prima di usare questa funzione, è necessario eseguire una chiamata WSAStartup riuscita. | |
Si è verificato un errore temporaneo nella risoluzione dei nomi. | |
È stato fornito un parametro non valido. Questo errore viene restituito se uno dei parametri riservati non è NULL. | |
Spazio buffer insufficiente disponibile. | |
Si è verificato un errore non recuperabile nella risoluzione dei nomi. | |
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 |