PNRP и WSALookupServiceBegin
PNRP использует функцию WSALookupServiceBegin для запуска процесса, который позволяет приложению выполнять следующие действия:
Клиенты, которые пытаются выполнить одну из функций, используют функции WSALookupServiceBegin, WSALookupServiceNext и WSALookupServiceEnd .
С помощью WSANSPIoctl службу подстановки можно использовать асинхронно. Сведения об асинхронном использовании функций службы подстановки см. в разделе PNRP и WSANSPIoctl.
Процесс работы с именами одноранговых узлов отличается от работы с облаками. Каждый процесс описывается отдельно в этом разделе.
Разрешение имени
Приложение использует WSALookupServiceBegin для получения IP-адреса, порта и протокола для одноранговой службы, зарегистрированной на другом компьютере. Функция WSALookupServiceBegin используется для запуска процесса разрешения имен и настройки параметров и ограничений. Возвращается дескриптор, который должен использоваться при вызове WSALookupServiceNext и WSANSPIoctl.
lpqsRestrictions
При разрешении имени однорангового узла структура LPWSAQUERYSET , на которую ссылается параметр lpqsRestrictions , должна содержать следующие значения:
-
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
-
Зарезервировано, должно быть равно нулю (0).
-
lpcsaBuffer
-
Зарезервировано, должно иметь значение NULL.
-
dwOutputFlags
-
Зарезервировано, должно быть равно нулю (0).
-
lpBlob
-
Должен быть либо указателем на структуру BLOB , либо иметь значение NULL. Если значение равно NULL, используются значения по умолчанию. Если он задан, lpBlob указывает на структуру PNRPINFO и должны быть заданы определенные параметры в структуре PNRPINFO . Дополнительные сведения см. в следующих описаниях структуры PNRPINFO.
Структура PNRPINFO
Если задан элемент lpBlob структуры LPWSAQUERYSET , необходимо задать следующие члены структуры PNRPINFO :
-
dwSize
-
Задает размер этой структуры.
-
lpwszIdentity
-
Зарезервировано, должно иметь значение NULL.
-
nMaxResolve
-
Указывает требуемое количество разрешений.
-
dwTimeout
-
Указывает запрошенный период ожидания для ожидания ответов. По умолчанию это 30 секунд. Максимальное значение — 600 секунд (10 минут).
-
dwLifetime
-
Зарезервировано, должно быть равно нулю (0).
-
enResolveCriteria
-
Должно быть одним из допустимых значений. Значение по умолчанию — PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Допустимые значения задаются PNRP_RESOLVE_CRITERIA.
-
Dwflags
-
Значение должно быть равно нулю (0) или PNRPINFO_HINT. Значение по умолчанию равно нулю (0).
-
saHint
-
Указывает IP-адрес для указания. Указание используется при попытке найти имя ближайшего однорангового узла. Формат указания — IPv6-адрес. Если saHint не указан при поиске имени ближайшего однорангового узла, вместо него используется IPv6-адрес локального компьютера. Этот элемент игнорируется, если dwFlags не задан.
-
enNameState
-
Зарезервировано, должно быть равно нулю (0).
dwControlFlags
Следующие флаги LUP_RETURN_* поддерживаются PNRP:
Значение | Описание |
---|---|
LUP_RETURN_NAME | Возвращает имя и контекст. |
LUP_RETURN_COMMENT | Возвращает комментарий, связанный с именем. |
LUP_RETURN_ADDR | Возвращает адрес, связанный с именем. |
Перечисление сетевых облаков
lpqsRestrictions
При перечислении облаков структура LPWSAQUERYSET , на которую ссылается параметр lpqsRestrictions , должна содержать следующие значения:
-
dwSize
-
Задает размер этой структуры.
-
lpszServiceInstanceName
-
Должен иметь значение NULL.
-
lpServiceClassID
-
Должен быть SVCID_PNRPCLOUD.
-
lpVersion
-
Зарезервировано, должно иметь значение NULL.
-
lpszComment
-
Зарезервировано, должно иметь значение NULL.
-
dwNameSpace
-
Должен быть NS_PNRPCLOUD.
-
lpNSProviderID
-
Должен иметь значение NS_PROVIDER_PNRPCLOUD или NULL.
-
lpszContext
-
Зарезервировано, должно иметь значение NULL.
-
dwNumberOfProtocols
-
Зарезервировано, должно быть равно нулю (0).
-
lpszQueryString
-
Зарезервировано, должно иметь значение NULL.
-
dwNumberOfCsAddrs
-
Зарезервировано, должно быть равно нулю (0).
-
lpcsaBuffer
-
Зарезервировано, должно иметь значение NULL.
-
dwOutputFlags
-
Зарезервировано, должно быть равно нулю (0).
-
lpBlob
-
Указатель на структуру BLOB , которая указывает на структуру PNRPCLOUDINFO . Если lpBlob имеет значение NULL, перечисляются все облака.
Структура PNRPCLOUDINFO
При перечислении облаков необходимо задать следующие элементы структуры PNRPCLOUDINFO :
-
dwSize
-
Задает размер этой структуры.
-
Облако
-
Указывает на структуру, указывающую критерии, которые можно использовать для фильтрации результатов поиска. Элемент Cloud.Scope может быть PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPE или PNRP_LINK_LOCAL_SCOPE. Если указан PNRP_SCOPE_ANY , возвращаются все облака. В противном случае возвращаются только облака, соответствующие Cloud.Scope .
-
enCloudState
-
Зарезервировано, должно быть равно нулю (0).
dwControlFlags
Следующие флаги LUP_RETURN_* поддерживаются PNRP:
Значение | Описание |
---|---|
LUP_RETURN_NAME | Возвращает имя и контекст. |
LUP_RETURN_BLOB | Возвращает большой двоичный объект , связанный с этим облаком. |
Связанные темы