PNRP и WSASetService
PNRP использует функциюWSASetServiceдля регистрации или удаления одноранговых имен.
Регистрация имени
Регистрация включает имя однорангового узла и набор конечных точек, в которых можно связаться со службой. Регистрация относится к облаку PNRP. После регистрации однорангового узла между регистрацией и распространением сведений о регистрации на другие узлы возникает задержка. В течение этого времени другие узлы могут не разрешать только что зарегистрированный одноранговый узел.
Регистрация службы не является постоянной.
- Если клиентский процесс, регистрирующий одноранговое имя, завершает работу или вызывает WSACleanup, то имя однорангового узла отменяется.
- Если указанное имя однорангового узла уже зарегистрировано в том же облаке текущим процессом, оно заменяется новыми значениями регистрации.
При регистрации имени однорангового узла необходимо указать следующие значения параметров:
- параметр essOperation должен иметь значение RNRSERVICE_REGISTER.
- dwControlFlags параметр должен быть нулевым (0).
При регистрации имени однорангового узла структура LPWSAQUERYSET, на которую ссылается параметр lpqsRegInfo, должен содержать следующие значения:
-
dwSize
-
Задает размер этой структуры.
-
lpszServiceInstanceName
-
Указывает имя однорангового узла для регистрации. Если имя однорангового узла незащищено, удостоверение является необязательным. Если удостоверение указано как NULL, PNRP использует локальное удостоверение компьютера по умолчанию.
-
lpServiceClassID
-
Должно быть SVCID_PNRPNAME.
-
lpVersion
-
Игнорировать. Установите значение NULL.
-
lpszComment
-
Игнорировать. Однако строка по-прежнему требуется меньше 40 символов, включая null конца.
-
dwNameSpace
-
Должен быть либо NS_PNRPNAME, либо NS_ALL.
-
lpNSProviderID
-
Должен быть NS_PROVIDER_PNRPNAME или NULL.
-
lpszContext
-
Должно быть облачное имя, пустая строка или NULL. Если это значение null или пустую строку, используется облако по умолчанию "Global". В противном случае оно должно указывать на допустимое имя облака.
-
dwNumberOfProtocols
-
Игнорировать. Установите значение нулю (0).
-
lpszQueryString
-
Игнорировать. Установите значение NULL.
-
dwNumberOfCsAddrs
-
Указывает количество адресов, зарегистрированных службой. Максимальное количество адресов, которые можно зарегистрировать для одного имени, равно 10.
-
lpcsaBuffer
-
Указатель на список адресов для регистрации.
-
dwOutputFlags
-
Игнорировать. Установите значение нулю (0).
-
lpBlob
-
Указатель на структуру BLOB, которая указывает на структуру PNRPINFO. Необходимо задать определенные параметры в структуре PNRPINFO. Дополнительные сведения см. в следующем разделе структуры PNRPINFO.
Структура PNRPINFO
Если задан элемент lpBlob структуры LPWSAQUERYSET, необходимо задать следующие элементы структуры PNRPINFO:
-
dwSize
-
Задает размер этой структуры.
-
lpwszIdentity
-
Указывает удостоверение имени однорангового узла, созданного с помощью PeerIdentityCreate. Если имя однорангового узла незащищено, удостоверение является необязательным. Если удостоверение указано как NULL, по умолчанию PNRP использует локальное удостоверение компьютера.
-
nMaxResolve
-
Игнорировать. Установите значение нулю (0).
-
dwTimeout
-
Игнорировать. Установите значение нулю (0).
-
dwLifetime
-
Указывает количество секунд между операциями обновления.
-
enResolveCriteria
-
Игнорировать. Установите значение нулю (0).
-
dwFlags
-
Должно быть равно нулю (0) или PNRPINFO_HINT. Значение по умолчанию равно нулю (0). Это означает, что часть расположения службы идентификатора PNRP создается с помощью IP-адреса в saHint. В противном случае расположение службы создается с помощью первого IP-адреса в первой записи IPv6 элемента lpcsaBuffer.
-
saHint
-
Указывает IPv6-адрес для указания.
-
enNameState
-
Игнорировать. Установите значение нулю (0).
Отмена регистрации имени однорангового узла
В следующем списке указаны важные сведения об отмене регистрации имени однорангового узла.
- Только приложение, которое регистрирует одноранговое имя, может отменить регистрацию.
- Имя однорангового узла отменяется автоматически, если вызывается WSACleanup.
- PNRP всегда удаляет всю регистрацию имени службы. Он не разрешает удаление отдельных адресов.
- При отмене регистрации имени параметр essOperation должен иметь значение RNRSERVICE_DELETE.
- PNRP не поддерживает значение RNRSERVICE_DEREGISTER.
- Параметр dwControlFlags должен быть нулевым (0).
При отмене регистрации имени структура LPWSAQUERYSET ссылки на параметры lpqsRegInfo должны содержать следующие значения:
-
dwSize
-
Задает размер этой структуры.
-
lpszServiceInstanceName
-
Указывает имя однорангового узла для отмены регистрации.
-
lpServiceClassID
-
Должен быть SVCID_PNRPNAME.
-
lpVersion
-
Игнорировать. Установите значение NULL.
-
lpszComment
-
Игнорировать. Установите значение NULL.
-
dwNameSpace
-
Должен быть либо NS_PNRPNAME, либо NS_ALL.
-
lpNSProviderID
-
Должен быть NS_PROVIDER_PNRPNAME или NULL.
-
lpszContext
-
Должно быть облачное имя, пустая строка или NULL. Если это значение null или пустую строку, используется облако по умолчанию Global. В противном случае оно должно указывать на допустимое имя облака.
-
dwNumberOfProtocols
-
Игнорировать. Установите значение нулю (0).
-
lpszQueryString
-
Игнорировать. Установите значение NULL.
-
dwNumberOfCsAddrs
-
Игнорировать. Установите значение NULL.
-
lpcsaBuffer
-
Игнорировать. Установите значение NULL.
-
dwOutputFlags
-
Игнорировать. Установите значение нулю (0).
-
lpBlob
-
Указатель на структуру BLOB, которая указывает на структуру PNRPINFO. Элемент lpszIdentity в структуре lpBlob определяет имя удостоверения, используемого для регистрации однорангового имени. Остальные элементы должны иметь те же значения, которые используются при регистрации имени.
Связанные разделы
-
WSASetService