LPNSPLOOKUPSERVICENEXT 콜백 함수(ws2spi.h)
NSPLookupServiceNext 함수는 요청된 서비스 정보를 검색하기 위해 NSPLookupServiceBegin에 대한 이전 호출에서 핸들을 가져온 후 호출됩니다.
공급자는 lpqsResults 버퍼에서 WSAQUERYSET 구조를 전달합니다. 클라이언트는 모든 WSAQUERYSET이 반환되었음을 나타내는 WSA_E_NOMORE 반환될 때까지 이 함수를 호출해야 합니다.
구문
LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;
INT Lpnsplookupservicenext(
[in] HANDLE hLookup,
[in] DWORD dwControlFlags,
[in, out] LPDWORD lpdwBufferLength,
[out] LPWSAQUERYSETW lpqsResults
)
{...}
매개 변수
[in] hLookup
WSALookupServiceBegin에 대한 이전 호출에서 반환된 핸들입니다.
[in] dwControlFlags
다음 작업을 제어하는 데 사용되는 플래그입니다. 현재 는 LUP_FLUSHPREVIOUS 너무 큰 결과 집합을 처리하는 수단으로 정의됩니다. 애플리케이션이 충분히 큰 버퍼를 제공할 수 없는 경우 LUP_FLUSHPREVIOUS 설정하면 공급자가 너무 큰 마지막 결과 집합을 삭제하고 이 호출에 대한 다음 집합으로 이동하도록 지시합니다.
[in, out] lpdwBufferLength
lpqsResults가 가리키는 버퍼에 포함된 입력의 크기(바이트)입니다. 출력에서 함수가 실패하고 오류가 WSAEFAULT인 경우 lpqsResults 가 레코드를 검색하기 위해 전달할 최소 크기(바이트)를 포함합니다.
[out] lpqsResults
반환 시 WSAQUERYSET 구조체에 하나의 결과 집합이 포함될 메모리 블록에 대한 포인터입니다.
반환 값
함수는 루틴이 성공하면 NO_ERROR (0)을 반환해야 합니다. 루틴이 실패하고 WSASetLastError를 사용하여 적절한 오류 코드를 설정해야 하는 경우 SOCKET_ERROR(–1)를 반환해야 합니다.
오류 코드 | 의미 |
---|---|
이 호출이 계속 처리되는 동안 NSPLookupServiceEnd 에 대한 호출이 수행되었습니다. 통화가 취소되었습니다. lpqsResults 버퍼의 데이터는 정의되지 않습니다.
Windows 소켓 2에서는 WSAECANCELLED (10103) 및 WSA_E_CANCELLED (10111)에 대해 충돌하는 오류 코드가 정의됩니다. 오류 코드 WSAECANCELLED 는 이후 버전에서 제거되며 WSA_E_CANCELLED 유지됩니다. 네임스페이스 공급자는 WSA_E_CANCELLED 오류 코드를 사용하여 가능한 가장 광범위한 애플리케이션과의 호환성을 유지해야 합니다. |
|
더 이상 사용할 수 있는 데이터가 없습니다.
Windows 소켓 2에서는 WSAENOMORE (10102) 및 WSA_E_NO_MORE (10110)에 대해 충돌하는 오류 코드가 정의됩니다. 오류 코드 WSAENOMORE 는 이후 버전에서 제거되며 WSA_E_NO_MORE 유지됩니다. 네임스페이스 공급자는 가능한 가장 광범위한 애플리케이션과의 호환성을 유지하기 위해 WSA_E_NO_MORE 오류 코드를 사용해야 합니다. |
|
지정된 조회 핸들이 잘못되었습니다. | |
이 작업을 수행하는 데 사용할 수 있는 메모리가 부족합니다. | |
lpqsResults 버퍼가 너무 작아서 WSAQUERYSET 집합을 포함할 수 없습니다. | |
이 공급자에 대해 하나 이상의 매개 변수가 잘못되었거나 누락되었습니다. | |
이 작업은 지원되지 않습니다. 네임스페이스 공급자가 이 함수를 구현하지 않으면 이 오류가 반환됩니다. | |
이름이 데이터베이스에서 발견되었지만 지정된 제한 사항과 일치하는 데이터가 없습니다. | |
서비스를 알 수 없습니다. 지정된 네임스페이스에서 서비스를 찾을 수 없습니다. |
설명
이 함수에 지정된 dwControlFlags 및 NSPLookupServiceBegin 시 지정된 dwControlFlags는 조합 목적으로 "제한"으로 처리됩니다. 제한 사항은 NSPLookupServiceBegin 시간에 있는 제한 사항과 NSPLookupServiceNext 시간의 제한 사항 간에 결합됩니다. 따라서 NSPLookupServiceNext 의 플래그는 NSPLookupServiceBegin에서 요청된 데이터보다 더 많거나 적은 플래그를 지정하는 오류는 아니지만 반환되는 데이터의 양을 늘릴 수 없습니다. 지정된 NSPLookupServiceNext 에 지정된 플래그는 해당 호출에만 적용됩니다.
dwControlFlagsLUP_FLUSHPREVIOUS 및 LUP_RES_SERVICE 결합된 제한 규칙의 예외입니다("제한" 플래그 대신 동작 플래그이기 때문). NSPLookupServiceNext에서 두 플래그 중 하나를 사용하는 경우 NSPLookupServiceBegin에서 동일한 플래그의 설정에 관계없이 정의된 효과가 있습니다.
예를 들어 NSPLookupServiceBegin에서 LUP_RETURN_VERSION 지정된 경우 서비스 공급자는 버전을 포함한 레코드를 검색합니다. NSPLookupServiceNext에서 LUP_RETURN_VERSION 지정되지 않은 경우 반환된 정보에는 사용 가능한 버전이 포함되어 있지 않습니다. 오류가 생성되지 않습니다.
또한 예를 들어 NSPLookupServiceBegin에서 LUP_RETURN_BLOB 지정되지 않았지만 NSPLookupServiceNext에 지정된 경우 반환된 정보에는 프라이빗 데이터가 포함되지 않습니다. 오류가 생성되지 않습니다.
쿼리 결과
다음 표에서는 WSAQUERYSET 을 나열하고 WSAQUERYSET 구조에서 쿼리 결과를 나타내는 방법을 설명합니다. 자세한 내용은 쿼리 관련 데이터 구조를 참조하세요.WSAQUERYSET 멤버 이름 | 결과 해석 |
---|---|
**dwSize** | sizeof(WSAQUERYSET)로 설정됩니다. 이는 버전 관리 메커니즘으로 사용됩니다. |
**dwOutputFlags** | **RESULT_IS_ALIAS** 플래그는 별칭 결과임을 나타냅니다. |
**lpszServiceInstanceName** | 서비스 이름을 포함하는 문자열을 참조합니다. |
**lpServiceClassId** | 서비스 클래스에 해당하는 GUID입니다. |
**lpVersion** | 특정 서비스 instance 버전 번호를 참조합니다. |
**lpszComment** | 선택 사항입니다. 서비스 instance 제공된 주석 문자열입니다. |
**dwNameSpace** | 서비스가 instance 네임스페이스를 찾았습니다. |
**lpNSProviderId** | 이 쿼리 결과를 제공한 특정 네임스페이스 공급자를 식별합니다. |
**lpszContext** | 서비스가 있는 계층 구조 네임스페이스의 컨텍스트 지점을 지정합니다. |
**dwNumberOfProtocols** | 결과에 대해 정의되지 않았습니다. |
**lpafpProtocols** | 결과에 대해 정의되지 않은 모든 필요한 프로토콜 정보는 CSADDR_INFO 구조에 있습니다. |
**lpszQueryString** | dwControlFlags에 **LUP_RETURN_QUERY_STRING**이 포함된 경우 이 멤버는 원래 쿼리에 지정된 **lpszServiceInstanceName**의 분할되지 않은 나머지를 반환합니다. 예를 들어 호스트 이름 및 해당 호스트 내의 파일 경로를 지정하는 계층적 이름으로 서비스를 식별하는 네임스페이스에서 반환되는 주소는 호스트 주소일 수 있고 나머지는 파일 경로일 수 있습니다. **lpszServiceInstanceName**이 완전히 구문 분석되고 **LUP_RETURN_QUERY_STRING**이 사용되는 경우 이 멤버는 null이거나 길이가 0인 문자열을 가리킵니다. |
**dwNumberOfCsAddrs** | CSADDR_INFO 구조체 배열의 요소 수를 나타냅니다. |
**lpcsaBuffer** | 각 요소 내에 하나의 완전한 전송 주소가 포함된 CSADDR_INFO 구조체 배열에 대한 포인터입니다. |
**lpBlob** | 선택 사항입니다. 공급자별 엔터티에 대한 포인터입니다. |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ws2spi.h |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기