RpcNsBindingLookupNext 함수(rpcnsi.h)

RpcNsBindingLookupNext 함수는 지정된 인터페이스 및 선택적으로 개체에 대한 호환되는 바인딩 핸들 목록을 반환합니다.

참고 이 함수는 Windows Vista 이상 운영 체제에서 지원되지 않습니다.
 

구문

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

매개 변수

LookupContext

RpcNsBindingLookupBegin 함수에서 반환된 이름 서비스 핸들입니다.

BindingVec

클라이언트 호환 서버 바인딩 핸들의 벡터에 대한 포인터의 주소를 반환합니다.

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RPC_S_NO_MORE_BINDINGS
더 이상 바인딩이 없습니다.
RPC_S_NAME_SERVICE_UNAVAILABLE
이름 서비스를 사용할 수 없습니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcNsBindingLookupNext 함수는 RpcNsBindingLookupBegin 함수에서 IfSpecObjUuid 매개 변수로 지정된 인터페이스 및 개체 UUID를 제공하는 서버에 대한 클라이언트 호환 서버 바인딩 핸들의 벡터를 반환합니다. (호환되는 단일 서버 바인딩 핸들 을 반환하는 RpcNsBindingImportNext와 비교합니다.)

RpcNsBindingLookupNext 함수는 서버와 직접 통신하지 않고 이름 서비스 데이터베이스와만 통신합니다.

Windows 2000에서 적용되는 RPC 환경은 Active Directory를 이름 서비스 데이터베이스로 사용하고 런타임 환경에서 검색을 수행하는 순서는 다음과 같습니다.

  • 로컬 캐시를 검색합니다.
  • 로컬 캐시에서 항목을 찾을 수 없는 경우 해당 컴퓨터의 Active Directory를 검색합니다.
  • 로컬 컴퓨터에서 항목을 찾을 수 없는 경우 도메인의 다른 모든 Active Directory 서비스에 브로드캐스트 요청을 보냅니다.

    항목이 Active Directory에 있지만 항목과 관련된 정보가 없는 경우 런타임 환경에서 이 브로드캐스트 요청을 실행하지 않습니다.

연속 호출에서 RpcNsBindingLookupNext 함수는 이름 서비스 데이터베이스 항목을 트래버스하여 각 항목에서 클라이언트 호환 서버 바인딩 핸들을 수집합니다.

Microsoft Active Directory가 이름 서비스 데이터베이스인 경우 RpcNsBindingLookupNext 는 지정된 항목 이름이 null 이고 레지스트리의 기본 항목이 정의되지 않거나 비어 있는 경우에만 데이터베이스를 트래버스합니다. 또한 Active Directory에서 혼합 항목이 허용되지 않으므로 함수는 그룹 또는 프로필 이름이 아닌 서버 항목 이름만 검색합니다.

DCE CDS(셀 디렉터리 서비스)가 이름 서비스 데이터베이스이고 검색이 시작되는 항목에 그룹 또는 프로필 이름 외에 바인딩 핸들이 포함된 경우 RpcNsBindingLookupNext 는 그룹 또는 프로필을 검색하기 전에 EntryName 의 바인딩 핸들을 반환합니다. 즉, 함수는 그룹 또는 프로필의 멤버를 처리하기 전에 부분적으로 전체 벡터를 반환할 수 있습니다.

반환되는 호환되는 바인딩 핸들에는 항상 개체 UUID가 포함되며, 값은 RpcNsBindingImportBegin 함수의 ObjUuid 매개 변수에 따라 달라집니다. null이 아닌 개체 UUID를 지정한 경우 반환된 바인딩 핸들에는 해당 개체 UUID가 포함됩니다. 그러나 null 개체 UUID 또는 null 값을 지정한 경우 반환되는 개체 UUID는 다음과 같은 가능성의 결과입니다.

  • 서버에서 개체 UUID를 내보내지 않은 경우 반환된 바인딩 핸들에는 nil 개체 UUID가 포함됩니다.
  • 서버에서 하나의 개체 UUID를 내보낸 경우 반환된 바인딩 핸들에는 해당 개체 UUID가 포함됩니다.
  • 서버에서 여러 개체 UUID를 내보낸 경우 반환된 바인딩 핸들에는 개체 UUID 중 하나가 포함됩니다. 다음 가져오기 작업은 반환된 개체 UUID를 비결정적 방식으로 선택합니다. 따라서 단일 서버 항목에서 호환되는 각 바인딩 핸들에 대해 다른 개체 UUID를 반환할 수 있습니다.
서버 바인딩 핸들의 반환된 벡터에서 클라이언트 애플리케이션은 개별 바인딩 핸들을 선택하기 위해 자체 조건을 사용하거나 애플리케이션이 RpcNsBindingSelect 함수를 호출하여 바인딩 핸들을 선택할 수 있습니다. RpcBindingToStringBindingRpcStringBindingParse 함수는 자체 선택 조건을 만드는 클라이언트에 도움이 됩니다.

클라이언트 애플리케이션은 선택한 바인딩 핸들을 사용하여 서버에 대한 원격 프로시저 호출을 시도할 수 있습니다. 클라이언트가 서버와의 관계를 설정하지 못하면 벡터에서 다른 바인딩 핸들을 선택할 수 있습니다. 벡터의 모든 바인딩 핸들이 사용되면 클라이언트 애플리케이션은 RpcNsBindingLookupNext를 다시 호출합니다.

클라이언트가 RpcNsBindingLookupNext를 호출할 때마다 함수는 바인딩 핸들의 다른 벡터를 반환합니다. 각 벡터에서 반환되는 바인딩 핸들은 순서가 지정되지 않습니다. 이 함수에 대한 여러 호출에서 반환된 벡터도 순서가 지정되지 않습니다.

클라이언트는 RpcNsBindingInqEntryName 함수를 호출하여 바인딩이 가져온 이름 서비스 데이터베이스 서버 항목 이름을 가져옵니다.

검색이 이름 서비스 데이터베이스의 끝에 도달하면 RpcNsBindingLookupNext는 RPC_S_NO_MORE_BINDINGS 상태 반환하고 BindingVecNULL을 반환합니다.

RpcNsBindingLookupNext 함수는 반환된 BindingVec 매개 변수에서 참조하는 데이터에 대한 스토리지를 할당합니다. 클라이언트 애플리케이션이 벡터로 완료되면 RpcBindingVectorFree 함수를 호출하여 스토리지 할당을 취소해야 합니다. RpcNsBindingLookupNext에 대한 각 호출에는 RpcBindingVectorFree에 대한 해당 호출이 필요합니다.

클라이언트는 RpcNsBindingLookupDone 함수를 호출하여 조회 컨텍스트를 삭제하거나 애플리케이션이 호환되는 서버에 대한 새 검색을 시작하도록 하려는 경우 를 담당합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 rpcnsi.h(Rpc.h 포함)
라이브러리 Rpcns4.lib
DLL Rpcns4.dll

추가 정보

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse