Функция обратного вызова LPNSPSETSERVICE (ws2spi.h)
Функция NSPSetService регистрирует или отменяет регистрацию экземпляра службы в пространстве имен.
Синтаксис
LPNSPSETSERVICE Lpnspsetservice;
INT Lpnspsetservice(
[in] LPGUID lpProviderId,
[in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
[in] LPWSAQUERYSETW lpqsRegInfo,
[in] WSAESETSERVICEOP essOperation,
[in] DWORD dwControlFlags
)
{...}
Параметры
[in] lpProviderId
Указатель на GUID конкретного поставщика пространства имен, в котором зарегистрирована служба.
[in] lpServiceClassInfo
Сведения о схеме класса службы.
[in] lpqsRegInfo
Сведения о свойстве, обновляемые после регистрации.
[in] essOperation
Тип запрошенной операции.
Этот параметр может быть одним из значений типа перечисления WSAESETSERVICEOP , определенного в файле заголовка Winsock2.h .
Значение | Значение |
---|---|
|
Зарегистрируйте службу. Для пространства имен SAP, используемого в среде NetWare, это означает отправку периодической широковещательной рассылки. Это nop для пространства имен DNS. Для постоянных хранилищ данных это означает обновление сведений об адресе. |
|
Отмените регистрацию службы. Для пространства имен SAP это означает прекращение отправки периодической широковещательной рассылки. Это nop для пространства имен DNS. Для постоянных хранилищ данных это означает удаление сведений об адресе. |
|
Удалите службу из динамических имен и постоянных пробелов. Для служб, представленных несколькими структурами CSADDR_INFO (с использованием флага SERVICE_MULTIPLE), будет удален только указанный адрес, который должен точно соответствовать соответствующей структуре **CSADDR_INFO**, предоставленной при регистрации службы. |
[in] dwControlFlags
Набор флагов, управляющий запрошенной операцией службы.
Возможные значения для этого параметра определяются в файле заголовка Winsock2.h .
Возвращаемое значение
Функция должна возвращать NO_ERROR (ноль), если подпрограмма завершается успешно. Он должен вернуть SOCKET_ERROR (–1), если подпрограмма завершается сбоем, и она должна задать соответствующий код ошибки с помощью WSASetLastError.
Код ошибки | Значение |
---|---|
Вызывающая подпрограмма не имеет достаточных привилегий для установки службы. | |
Недостаточно памяти для выполнения этой операции. | |
Один или несколько параметров были недопустимыми или отсутствуют для этого поставщика. | |
Операция не поддерживается. Эта ошибка возвращается, если поставщик пространства имен не реализует эту функцию. | |
Служба неизвестна. Служба не найдена в указанном пространстве имен. |
Комментарии
В следующей таблице перечислены доступные значения для essOperation и dwControlFlags.
Операция | Флаги | Служба уже существует | Служба не существует |
---|---|---|---|
**RNRSERVICE_REGISTER** | None | Перезаписывает объект . Использует только указанные адреса. Объект имеет значение REGISTERED. | Создает новый объект. Использует только указанные адреса. Объект имеет значение REGISTERED. |
**RNRSERVICE_REGISTER** | **SERVICE_MULTIPLE** | объект Обновления. Добавляет новые адреса в существующий набор. Объект имеет значение REGISTERED. | Создает новый объект. Использует все указанные адреса. Объект имеет значение REGISTERED. |
**RNRSERVICE_DEREGISTER** | None | Удаляет все адреса, но не удаляет объект из пространства имен. Объект дерегистрирован. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DEREGISTER** | **SERVICE_MULTIPLE** | объект Обновления. Удаляет только указанные адреса. Пометьте объект как DEREGISTERED только в том случае, если нет адресов. Не удаляется из пространства имен. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | None | Удаляет объект из пространства имен. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | **SERVICE_MULTIPLE** | Удаляет только указанные адреса. Удаляет объект из пространства имен, только если адресов не осталось. | WSASERVICE_NOT_FOUND |
Если параметру dwControlFlags присвоено значение SERVICE_MULTIPLE, это позволяет приложению управлять своими адресами независимо. Это полезно, если приложение должно управлять своими протоколами по отдельности или если служба находится на нескольких компьютерах. Например, если служба использует несколько протоколов, один сокет прослушивания может прерваться, но другие сокеты остаются в рабочем состоянии. В этом примере служба может отменить регистрацию прерванного адреса, не затрагивая другие адреса.
При использовании SERVICE_MULTIPLE приложение не должно позволять старым адресам оставаться в объекте . Это может произойти, если приложение прерывается без выполнения запроса RNRSERVICE_DEREGISTER . Когда служба регистрируется, она должна хранить свои адреса. При следующем вызове служба должна явно отменить регистрацию этих старых адресов перед регистрацией новых адресов.
Свойства службы
В следующей таблице перечислены имена членов WSAQUERYSET и описано, как представляются данные свойств службы. Члены, помеченные как (необязательно), могут быть предоставлены с пустым указателем.Имя члена WSAQUERYSET | Описание свойства службы |
---|---|
**dwSize** | Задайте для параметра sizeof(WSAQUERYSET). Это механизм управления версиями. |
**lpszServiceInstanceName** | Указанная строка содержит имя экземпляра службы. |
**lpServiceClassId** | Идентификатор GUID, соответствующий этому классу службы. |
**lpVersion** | Необязательный элемент. Предоставляет номер версии экземпляра службы. |
**lpszComment** | Необязательный элемент. Необязательная строка комментария. |
**dwNameSpace** | Игнорируется для этой операции. |
**lpNSProviderId** | Игнорируется для этой операции. Идентификатор поставщика содержится в параметре lpProviderId . |
**lpszContext** | Необязательный элемент. Начальная точка запроса в иерархическом пространстве имен. |
**dwNumberOfProtocols** | Игнорируется для этой операции. |
**lpafpProtocols** | Игнорируется для этой операции. |
**pszQueryString** | Игнорируется для этой операции. |
**dwNumberOfCsAddrs** | Количество элементов в массиве CSADDR_INFO структур, на которые ссылается lpcsaBuffer. |
**lpcsaBuffer** | Указатель на массив CSADDR_INFO структур, содержащих адрес или адреса, которые прослушивается службой. |
**dwOutputFlags** | Игнорируется для этой операции. |
**lpBlob** | Необязательный элемент. Указатель на сущность конкретного поставщика. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ws2spi.h |