Функция SetServiceA (nspapi.h)

Функция SetService регистрирует или удаляет из реестра сетевую службу в одном или нескольких пространствах имен. Функция также может добавлять или удалять тип сетевой службы в одном или нескольких пространствах имен.

Примечание Функция SetService устарела. Функции, описанные в разделе Разрешение имен, независимых от протокола , предоставляют эквивалентные функции в сокетах Windows 2. Для удобства разработчиков Windows Sockets 1.1 справочные материалы приведены ниже.
 

Синтаксис

INT SetServiceA(
  [in]           DWORD                dwNameSpace,
  [in]           DWORD                dwOperation,
  [in]           DWORD                dwFlags,
  [in]           LPSERVICE_INFOA      lpServiceInfo,
  [in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  [out]          LPDWORD              lpdwStatusFlags
);

Параметры

[in] dwNameSpace

Пространство имен или набор пространств имен по умолчанию, в которых будет работать функция.

Используйте одну из следующих констант, чтобы указать пространство имен.

Значение Значение
NS_DEFAULT
Набор пространств имен по умолчанию. Функция запрашивает каждое пространство имен в этом наборе. Набор пространств имен по умолчанию обычно включает все пространства имен, установленные в системе. Однако системные администраторы могут исключить определенные пространства имен из набора. NS_DEFAULT — это значение, которое большинство приложений должны использовать для dwNameSpace.
NS_DNS
Система доменных имен, используемая в Интернете для разрешения имени узла.
NS_NDS
Поставщик NetWare 4.
NS_NETBT
Уровень NetBIOS через TCP/IP. Все системы Windows регистрируют свои имена компьютеров в NetBIOS. Это пространство имен используется для преобразования имени компьютера в IP-адрес, использующий эту регистрацию.
NS_SAP
Протокол NetWare Service Advertising. При необходимости он может получить доступ к привязке NetWare. NS_SAP — это динамическое пространство имен, которое обеспечивает регистрацию служб.
NS_TCPIP_HOSTS
Значение поиска в <файле systemroot>\system32\drivers\etc\posts.
NS_TCPIP_LOCAL
Локальные механизмы разрешения имен TCP/IP, включая сравнение с именем локального узла и значением поиска в кэше сопоставлений узлов и IP-адресов.

[in] dwOperation

Операция, которую будет выполнять функция. Используйте одно из следующих значений, чтобы указать операцию:

Значение Значение
SERVICE_REGISTER
Зарегистрируйте сетевую службу в пространстве имен. Эту операцию можно использовать с флагами SERVICE_FLAG_DEFER и SERVICE_FLAG_HARD битов.
SERVICE_DEREGISTER
Удалите из реестра сетевую службу из пространства имен. Эту операцию можно использовать с флагами SERVICE_FLAG_DEFER и SERVICE_FLAG_HARD битов.
SERVICE_FLUSH
Выполните любую операцию, вызванную с флагом бита SERVICE_FLAG_DEFER, равным одному.
SERVICE_ADD_TYPE
Добавьте тип службы в пространство имен.

Для этой операции используйте элемент ServiceSpecificInfoструктуры SERVICE_INFO , на которую указывает lpServiceInfo , чтобы передать структуру SERVICE_TYPE_INFO_ABS . Необходимо также задать элемент ServiceTypeструктуры SERVICE_INFO . Другие элементы SERVICE_INFO игнорируются.

SERVICE_DELETE_TYPE
Удалите тип службы, добавленный предыдущим вызовом, указывающим операцию SERVICE_ADD_TYPE, из пространства имен.

[in] dwFlags

Набор битовых флагов, изменяющих операцию функции. Можно задать один или несколько из следующих битовых флагов:

Значение Значение
SERVICE_FLAG_DEFER
Этот битовый флаг действителен, только если операция SERVICE_REGISTER или SERVICE_DEREGISTER.

Если этот битовый флаг является одним и является допустимым, поставщик пространства имен должен отложить операцию регистрации или отмены регистрации, пока не будет запрошена операция SERVICE_FLUSH.

SERVICE_FLAG_HARD
Этот битовый флаг действителен, только если операция SERVICE_REGISTER или SERVICE_DEREGISTER.

Если этот битовый флаг равен одному и является допустимым, поставщик пространства имен обновляет все соответствующие сведения о постоянном хранилище при выполнении операции.

Например, если операция включает отмену регистрации в пространстве имен, которое использует постоянное хранилище, поставщик пространства имен удалит соответствующие данные постоянного хранилища.

[in] lpServiceInfo

Указатель на структуру SERVICE_INFO , содержащую сведения о сетевой службе или типе службы.

[in, optional] lpServiceAsyncInfo

Зарезервировано для последующего использования. Необходимо задать значение NULL.

[out] lpdwStatusFlags

Набор битовых флагов, получающих сведения о состоянии функции. Определен следующий битовый флаг:

Значение Значение
SET_SERVICE_ PARTIAL_SUCCESS
Одному или нескольким поставщикам пространств имен не удалось успешно выполнить запрошенную операцию.

Возвращаемое значение

Если функция завершается сбоем, возвращаемое значение будет SOCKET_ERROR. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. GetLastError может возвращать следующее расширенное значение ошибки.

Код ошибки Значение
ERROR_ALREADY_ ЗАРЕГИСТРИРОВАНО
Функция попыталась зарегистрировать уже зарегистрированную службу.

Комментарии

Примечание

Заголовок nspapi.h определяет SetService как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header nspapi.h
Библиотека Mswsock.lib
DLL Mswsock.dll

См. также раздел

GetService

SERVICE_INFO

SERVICE_TYPE_INFO_ABS

Функции Winsock

Справочник по Winsock