Share via


Advertising Server 인터페이스

자동 핸들을 사용하는 애플리케이션의 서버 쪽은 RpcNsBindingExport 함수를 호출하여 서버에 대한 바인딩 정보를 클라이언트에서 사용할 수 있도록 해야 합니다. 자동 바인딩 핸들에는 클라이언트가 액세스할 수 있는 서버에서 실행되는 이름 서비스가 필요합니다. 이름 서비스의 Microsoft 구현인 Microsoft Locator는 자동 핸들을 관리합니다. 암시적 및 명시적 바인딩 핸들을 사용하는 서버 애플리케이션은 이름 서비스 데이터베이스에 해당 존재를 보급할 수도 있습니다.

일반적으로 서버는 다음 런타임 함수를 호출합니다.

/* auto handle server application (fragment) */
 
//interface header file that the MIDL compiler generates
#include "auto.h" 
 
void main(void)
{
    RpcUseProtseqEp(...);
    RpcServerRegisterIf(...);
    RpcServerInqBindings(...);
    RpcNsBindingExport(...);
    ...
}

이 코드 조각의 처음 두 함수에 대한 호출은 Hello, World 예제와 유사합니다. 이러한 함수는 클라이언트에서 사용할 수 있는 바인딩에 대한 정보를 제공합니다. RpcServerInqBindingsRpcNsBindingExport에 대한 호출은 이름 서비스 데이터베이스에 정보를 저장합니다. RpcServerInqBindings에 대한 호출은 핸들을 이름 서비스로 내보내기 전에 바인딩 벡터를 유효한 바인딩 핸들로 채웁니다. 서버 프로그램이 핸들을 데이터베이스로 내보낸 후 클라이언트(또는 클라이언트 스텁)는 RpcNsBindingImportBeginRpcNsBindingImportNext 를 호출하여 이 정보를 가져올 수 있습니다. 자세한 내용은 서버 호스트 시스템 찾기를 참조하세요.

RpcServerInqBindingsRpcNsBindingExport 및 관련 데이터 구조에 대한 호출은 다음과 유사합니다.

RPC_BINDING_VECTOR * pBindingVector;
RPCSTATUS status;
 
status = RpcServerInqBindings(&pBindingVector);
 
status = RpcNsBindingExport(
                fNameSyntaxType,      // name syntax type 
                pszAutoEntryName,     // nsi entry name 
                autoh_ServerIfHandle, // if server handle
                pBindingVector,       // set in previous call 
                NULL);                // UUID vector

RpcServerInqBindings 매개 변수 pBindingVectorRPC_BINDING_VECTOR 대한 포인터에 대한 포인터입니다. 또한 RpcNsBindingExport 에 대한 각 호출 뒤에 RpcBindingVectorFree를 호출해야 합니다.

이름 서비스 데이터베이스에서 내보낸 인터페이스를 제거하기 위해 서버는 다음과 같이 RpcNsBindingUnexport를 호출합니다 .

status = RpcNsBindingUnexport(
                fNameSyntaxType, 
                pszAutoEntryName,  
                auto_ServerIfHandle,
                NULL);              // unexport handles only

RpcNsBindingUnexport 함수는 서비스가 영구적으로 제거되는 경우에만 사용해야 합니다. 유지 관리를 위해 서버가 종료되는 경우와 같이 서비스를 일시적으로 사용하지 않도록 설정하면 안 됩니다. 서버 프로그램은 이름 서비스 데이터베이스에 등록할 수 있지만 서버가 일시적으로 오프라인 상태이므로 사용할 수 없습니다. 클라이언트 애플리케이션에는 이러한 조건에 대한 예외 처리 코드가 포함되어야 합니다.

이름 서비스 데이터베이스의 콘텐츠 및 형식에 대한 자세한 내용은 RPC 이름 서비스 데이터베이스를 참조하세요.

클라이언트 및 서버 프로그램이 모두 Windows 2000에서 실행되는 경우 애플리케이션은 Active Directory 서비스를 활용할 수 있습니다. 클라이언트 및 서버 프로그램을 실행하는 컴퓨터는 모두 Windows 2000 도메인의 구성원이어야 합니다.

Active Directory 서비스를 사용하여 현재 상태를 알리려면 서버 프로그램이 도메인 관리자의 보안 컨텍스트에서 실행되어야 합니다. 도메인 사용자의 컨텍스트에서 실행되는 경우 도메인 관리자는 RPC Services 컨테이너에서 ACL(액세스 제어 목록)을 수정해야 합니다. 자세한 내용은 Active Directory 설명서를 참조하세요.