PNRP 및 WSALookupServiceBegin
PNRP는 WSALookupServiceBegin 함수를 사용하여 애플리케이션이 다음을 수행할 수 있도록 하는 프로세스를 시작합니다.
함수 중 하나를 수행하려는 클라이언트는 WSALookupServiceBegin, WSALookupServiceNext 및 WSALookupServiceEnd 함수를 사용합니다.
WSANSPIoctl을 사용하면 조회 서비스를 비동기적으로 사용할 수 있습니다. 조회 서비스 함수를 비동기적으로 사용하는 방법에 대한 자세한 내용은 PNRP 및 WSANSPIoctl을 참조하세요.
피어 이름을 사용하는 프로세스는 클라우드 작업과 다릅니다. 각 프로세스는 이 항목에서 별도로 설명합니다.
이름 확인
애플리케이션은 WSALookupServiceBegin 을 사용하여 다른 컴퓨터에 등록된 피어 서비스에 대한 IP 주소, 포트 및 프로토콜을 가져옵니다. WSALookupServiceBegin 함수는 이름 확인 프로세스를 시작하고 매개 변수 및 제한을 설정하는 데 사용됩니다. 핸들이 반환되며 WSALookupServiceNext 및 WSANSPIoctl을 호출할 때 사용해야 합니다.
lpqsRestrictions
피어 이름을 확인할 때 lpqsRestrictions 매개 변수 참조에 다음 값이 포함되어야 하는 LPWSAQUERYSET 구조체는 다음과 같습니다.
-
dwSize
-
이 구조체의 크기를 지정합니다.
-
lpszServiceInstanceName
-
resolve 피어 이름을 지정합니다.
-
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 구조체
LPWSAQUERYSET 구조체의 lpBlob 멤버가 설정된 경우 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
클라우드를 열거할 때 lpqsRestrictions 매개 변수 참조가 참조하는 LPWSAQUERYSET 구조에는 다음 값이 포함되어야 합니다.
-
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
-
PNRPCLOUDINFO 구조를 가리키는 BLOB 구조체에 대한 포인터입니다. 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에서 지원됩니다.
값 | Description |
---|---|
LUP_RETURN_NAME | 이름과 컨텍스트를 반환합니다. |
LUP_RETURN_BLOB | 이 클라우드와 연결된 BLOB 을 반환합니다. |
관련 항목