Функция SetAddrInfoExA (ws2tcpip.h)
Функция SetAddrInfoEx регистрирует или отменяет регистрацию имени, имени службы и связанных адресов с определенным поставщиком пространства имен.
Синтаксис
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
);
Параметры
[in] pName
Указатель на строку, завершающуюся значением NULL, содержащую имя, под которым следует регистрировать или отменять регистрацию адресов. Интерпретация этого параметра, относяскогося к поставщику пространства имен.
[in] pServiceName
Указатель на необязательную строку, завершающуюся значением NULL, которая содержит имя службы, связанное с регистрируемым именем. Интерпретация этого параметра зависит от поставщика пространства имен.
[in, out] pAddresses
Указатель на необязательный список адресов для регистрации в поставщике пространства имен.
[in] dwAddressCount
Число адресов, переданных в параметре pAddresses . Если этот параметр равен нулю, параметр pName отменяется в поставщике пространства имен.
[in, optional] lpBlob
Необязательный указатель на данные, используемые для задания сведений о пространстве имен для конкретного поставщика, связанного с параметром pName за пределами списка адресов. Любые сведения, которые не могут быть переданы в параметре pAddresses , можно передать в параметре lpBlob . Формат этих сведений зависит от поставщика пространства имен.
[in] dwFlags
Набор флагов, управляющих способом регистрации параметров pName и pServiceName в поставщике пространства имен. Интерпретация этих сведений зависит от поставщика пространства имен.
[in] dwNameSpace
Идентификатор пространства имен, определяющий, с каким поставщиком пространства имен следует зарегистрировать эти сведения. Передача определенного идентификатора пространства имен приведет к регистрации этих сведений только у поставщиков пространств имен, поддерживающих указанное пространство имен. Указание NS_ALL приведет к регистрации сведений со всеми установленными и активными поставщиками пространств имен.
Параметры параметра dwNameSpace перечислены во включаемом файле Winsock2.h . Несколько поставщиков пространств имен включены в Windows Vista и более поздних версий. Можно установить и другие поставщики пространств имен, поэтому следующие возможные значения являются общедоступными. Многие другие возможны.
[in, optional] lpNspId
Указатель на необязательный GUID определенного поставщика пространства имен для регистрации этих сведений в случае, когда несколько поставщиков пространства имен зарегистрированы в одном пространстве имен, например NS_DNS. Передача GUID для определенного поставщика пространства имен приведет к тому, что сведения будут зарегистрированы только в указанном поставщике пространства имен. Функцию WSAEnumNameSpaceProviders можно вызвать для получения GUID для поставщика пространства имен.
[in, optional] timeout
Необязательный параметр, указывающий время (в миллисекундах) ожидания ответа от поставщика пространства имен перед прерыванием вызова. Этот параметр в настоящее время зарезервирован и должен иметь значение NULL , так как параметр времени ожидания не поддерживается.
[in, optional] lpOverlapped
Необязательный указатель на перекрываемую структуру, используемую для асинхронной операции. Этот параметр в настоящее время зарезервирован и должен иметь значение NULL , так как асинхронные операции не поддерживаются.
[in, optional] lpCompletionRoutine
Необязательный указатель на функцию, вызываемую при успешном завершении асинхронных операций. Этот параметр в настоящее время зарезервирован и должен иметь значение NULL , так как асинхронные операции не поддерживаются.
[out, optional] lpNameHandle
Необязательный указатель, используемый только для асинхронных операций. Этот параметр в настоящее время зарезервирован и должен иметь значение NULL , так как асинхронные операции не поддерживаются.
Возвращаемое значение
При успешном выполнении SetAddrInfoEx возвращает NO_ERROR (0). Сбой возвращает ненулевой код ошибки Сокеты Windows, как указано в разделе Коды ошибок сокетов Windows.
Код ошибки | Значение |
---|---|
Перед использованием этой функции должен произойти успешный вызов WSAStartup . | |
Произошел временный сбой при разрешении имен. | |
Указан недопустимый параметр. Эта ошибка возвращается, если любой из зарезервированных параметров не имеет значения NULL. | |
Недостаточно места в буфере. | |
Произошел неустранимый сбой при разрешении имен. | |
Произошел сбой выделения памяти. |
Комментарии
Функция SetAddrInfoEx предоставляет независимый от протокола метод для регистрации или отмены регистрации имени и одного или нескольких адресов с помощью поставщика пространства имен. Поставщик пространств имен NS_EMAIL в Windows Vista и более поздних версий поддерживает регистрацию и отмену регистрации адресов. Поставщики пространств имен по умолчанию NS_DNS, NS_PNRPNAME и NS_PNRPNAME в настоящее время не поддерживают регистрацию имен.
Если функция SetAddrInfoEx вызывается с NS_ALL задано в качестве параметра dwNameSpace , а параметр lpNspId не указан, setAddrInfoEx попытается зарегистрировать или отменить регистрацию имени и связанных адресов со всеми установленными и активными пространствами имен. Функция SetAddrInfoEx возвращает успешное выполнение, если какой-либо из поставщиков пространств имен успешно зарегистрировал или отменил регистрацию имени, но не будет никаких указаний о том, какой поставщик пространства имен успешно выполнен или какой из них не выполнил запрос.
Если определен ЮНИКОД или _UNICODE , SetAddrInfoEx определяется как SetAddrInfoExW, версия Юникода этой функции. Строковые параметры определяются для типа данных PWSTR .
Если юникод или _UNICODE не определены, SetAddrInfoEx определяется как SetAddrInfoExA, anSI-версия этой функции. Строковые параметры относятся к типу данных PCSTR .
Сведения, зарегистрированные в поставщике пространства имен, можно вернуть, вызвав функции GetAddrInfoEx, getaddrinfo или GetAddrInfoW . Функция GetAddrInfoEx — это расширенная версия функций getaddrinfo и GetAddrInfoW .
В Windows Vista и более поздних версиях при вызове SetAddrInfoEx из службы, если операция является результатом вызова службы пользовательским процессом, служба должна олицетворять пользователя. Это необходимо, чтобы обеспечить надлежащее применение секций безопасности и маршрутизации.
Windows 8.1 и Windows Server 2012 R2. Функция SetAddrInfoExW поддерживается для приложений Магазина Windows на Windows 8.1, Windows Server 2012 R2 и более поздних версиях.
Примечание
Заголовок ws2tcpip.h определяет SetAddrInfoEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8.1, Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | ws2tcpip.h |
Библиотека | Ws2_32.lib |
DLL | Ws2_32.dll |