LPNSPLOOKUPSERVICENEXT 콜백 함수(ws2spi.h)
공급자는 lpqsResults 버퍼에 WSAQUERYSET 구조를 전달합니다. 클라이언트는 WSA_E_NOMORE반환될 때까지 이 함수를 호출해야 하며, 이는 모든 WSAQUERYSET 반환되었음을 나타냅니다.
통사론
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)를 반환해야 합니다. 루틴이 실패하면 SOCKET_ERROR(–1)를 반환해야 하며 WSASetLastError사용하여 적절한 오류 코드를 설정해야 합니다.
오류 코드 | 의미 |
---|---|
이 호출이 계속 처리되는 동안 NSPLookupServiceEnd 호출되었습니다. 통화가 취소되었습니다.
lpqsResults 버퍼의 데이터는 정의되지 않습니다.
Windows 소켓 2에서 충돌하는 오류 코드는 |
|
더 이상 사용할 수 있는 데이터가 없습니다.
Windows 소켓 2에서 충돌하는 오류 코드는 |
|
지정한 조회 핸들이 잘못되었습니다. | |
이 작업을 수행하는 데 사용할 수 있는 메모리가 부족합니다. | |
|
lpqsResults 버퍼가 너무 작아서 WSAQUERYSET 집합을 포함할 수 없습니다. |
|
이 공급자에 대해 하나 이상의 매개 변수가 잘못되었거나 누락되었습니다. |
|
작업이 지원되지 않습니다. 네임스페이스 공급자가 이 함수를 구현하지 않으면 이 오류가 반환됩니다. |
데이터베이스에서 이름이 발견되었지만 지정된 제한 사항과 일치하는 데이터가 없습니다. | |
서비스를 알 수 없습니다. 지정된 네임스페이스에서 서비스를 찾을 수 없습니다. |
발언
이 함수에 지정된
dwControlFlagsLUP_FLUSHPREVIOUS 및 LUP_RES_SERVICE 결합된 제한 규칙의 예외입니다("제한" 플래그 대신 동작 플래그이기 때문). NSPLookupServiceNext두 플래그 중 하나를 사용하는 경우 NSPLookupServiceBegin동일한 플래그의 설정에 관계없이 정의된 효과가 있습니다.
예를 들어 NSPLookupServiceBeginLUP_RETURN_VERSION 지정된 경우 서비스 공급자는 버전을 포함한 레코드를 검색합니다. LUP_RETURN_VERSIONNSPLookupServiceNext지정되지 않은 경우 반환된 정보에는 버전을 사용할 수 있었음에도 불구하고 해당 버전이 포함되지 않습니다. 오류가 생성되지 않습니다.
예를 들어 LUP_RETURN_BLOBNSPLookupServiceBegin지정되지 않았지만 NSPLookupServiceNext지정된 경우 반환된 정보에는 개인 데이터가 포함되지 않습니다. 오류가 생성되지 않습니다.
쿼리 결과
다음 표에서는 WSAQUERYSET 나열하고 WSAQUERYSET 구조에서 쿼리 결과가 표시되는 방법을 설명합니다. 자세한 내용은 데이터 구조WSAQUERYSET 멤버 이름 | 결과 해석 |
---|---|
**dwSize** | sizeof(WSAQUERYSET)로 설정됩니다. 이는 버전 관리 메커니즘으로 사용됩니다. |
**dwOutputFlags** | **RESULT_IS_ALIAS** 플래그는 별칭 결과임을 나타냅니다. |
**lpszServiceInstanceName** | 서비스 이름을 포함하는 문자열을 참조합니다. |
**lpServiceClassId** | 서비스 클래스에 해당하는 GUID입니다. |
**lpVersion** | 특정 서비스 인스턴스의 버전 번호를 참조합니다. |
**lpszComment** | 선택적. 서비스 인스턴스에서 제공하는 주석 문자열입니다. |
**dwNameSpace** | 서비스 인스턴스가 발견된 네임스페이스입니다. |
**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 |
참고 항목
NSPLookupServiceBegin
NSPLookupServiceEnd
WSAQUERYSET