RpcNsBindingExportA 함수(rpcnsi.h)

RpcNsBindingExport 함수는 여러 바인딩 핸들과 서버에 대한 여러 개체를 사용하여 이름 서비스-데이터베이스 항목을 설정합니다.

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

구문

RPC_STATUS RpcNsBindingExportA(
  unsigned long      EntryNameSyntax,
  RPC_CSTR           EntryName,
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVec,
  UUID_VECTOR        *ObjectUuidVec
);

매개 변수

EntryNameSyntax

EntryName 구문입니다.

HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax레지스트리 값 항목에 지정된 구문을 사용하려면 RPC_C_NS_SYNTAX_DEFAULT 값을 제공합니다.

EntryName

바인딩 핸들 및 개체 UUID를 내보낼 항목 이름에 대한 포인터입니다. null 또는 빈 문자열을 제공할 수 없습니다. 클라이언트와 서버는 모두 동일한 항목 이름을 사용해야 합니다.

IfSpec

내보낼 인터페이스를 지정하는 스텁 생성 데이터 구조입니다. null 값은 내보낼 바인딩 핸들이 없음을 나타내고(개체 UUID만 내보낼 수 있음) BindingVec 는 무시됩니다.

BindingVec

내보낼 서버 바인딩에 대한 포인터입니다. null 값은 내보낼 바인딩 핸들이 없음을 나타냅니다(개체 UUID만 내보낼 수 있음).

ObjectUuidVec

서버에서 제공하는 개체 UUID의 벡터에 대한 포인터입니다. 서버 애플리케이션은 이 벡터를 생성합니다. null 값은 내보낼 개체 UUID가 없음을 나타냅니다(바인딩 핸들만 내보낼 수 있음).

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RPC_S_NOTHING_TO_EXPORT
내보낼 것이 없었다.
RPC_S_INVALID_BINDING
바인딩 핸들이 잘못되었습니다.
RPC_S_WRONG_KIND_OF_BINDING
이것은 작업에 대한 잘못된 종류의 바인딩이었습니다.
RPC_S_INVALID_NAME_SYNTAX
이름 구문이 잘못되었습니다.
RPC_S_UNSUPPORTED_NAME_SYNTAX
이름 구문은 지원되지 않습니다.
RPC_S_INCOMPLETE_NAME
이름이 불완전합니다.
RPC_S_NO_NS_PRIVILEGE
이름 서비스 작업에 대한 권한이 없습니다.
RPC_S_NAME_SERVICE_UNAVAILABLE
이름 서비스를 사용할 수 없습니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcNsBindingExport 함수를 사용하면 서버 애플리케이션이 모든 클라이언트 애플리케이션에서 사용할 수 있도록 name-service 데이터베이스에 인터페이스를 공개적으로 제공할 수 있습니다.

Windows 2000에서 적용되는 RPC 런타임 환경은 Active Directory를 이름 서비스 데이터베이스로 사용합니다. 즉, 권한 있는 내보낸 항목은 이름 서비스에서 유지되며 다시 부팅한 후에도 표시됩니다. 권한 없는 내보내는 지속되지 않습니다. 권한 부여 및 Access Control 목록에 대한 자세한 내용은 SDK(플랫폼 소프트웨어 개발 키트)의 보안 섹션에서 Access Control 참조하세요.

인터페이스를 내보내기 위해 서버 애플리케이션은 인터페이스를 사용하여 RpcNsBindingExport 루틴을 호출하고 서버 바인딩은 클라이언트가 서버에 액세스하는 데 사용할 수 있는 핸들을 호출합니다. 또한 서버 애플리케이션은 RpcNsBindingExport 함수를 호출하여 이름 서비스 데이터베이스에서 제공하는 리소스의 개체 UUID(있는 경우)를 공개적으로 제공합니다.

서버는 RpcNsBindingExport에 대한 단일 호출에서 인터페이스 및 개체를 내보내거나 별도로 내보낼 수 있습니다. EntryName 에서 지정한 name-service 데이터베이스 항목이 없으면 RpcNsBindingExport 에서 해당 항목을 만들려고 시도합니다. 이 경우 서버 애플리케이션에는 항목을 만들 수 있는 권한이 있어야 합니다. RpcNsBindingExport를 호출하는 것 외에도 RpcServerUseAllProtseqs 또는 RpcServerUseProtseq 함수를 호출하는 서버는 RpcEpRegister 또는 RpcEpRegisterNoReplace를 호출하여 로컬 엔드포인트 맵 데이터베이스에 등록해야 합니다.

서버는 해당 인터페이스를 name-service 데이터베이스로 내보낼 필요가 없습니다. 서버가 내보내지 않으면 서버의 바인딩 정보를 개인적으로 알고 있는 클라이언트만 해당 인터페이스에 액세스할 수 있습니다. 예를 들어 문자열 바인딩을 생성하는 데 필요한 정보가 있는 클라이언트는 RpcBindingFromStringBinding 을 호출하여 서버에 대한 원격 프로시저 호출을 위한 바인딩 핸들을 만들 수 있습니다.

RpcNsBindingExport를 호출하기 전에 서버는 다음을 수행해야 합니다.

RpcServerInqBindings 함수에서 반환된 벡터는 RpcNsBindingExport에 대한 Binding 매개 변수가 됩니다. 바인딩이 내보내지는 것을 방지하려면 선택한 벡터 요소를 null 값으로 설정합니다.

서버가 동일한 이름 서비스 데이터베이스 항목으로 여러 번 내보내는 경우 RpcNsBindingExport 에 대한 두 번째 및 후속 호출은 해당 데이터가 서버 항목에 이미 있는 바인딩 정보와 다른 경우 바인딩 정보 및 개체 UUID를 추가합니다. 기존 데이터는 항목에서 제거되지 않습니다.

이름 서비스 데이터베이스에서 바인딩 핸들 및 개체 UUID를 제거하기 위해 서버 애플리케이션은 RpcNsBindingUnexport 함수를 호출합니다 .

서버 항목에는 하나 이상의 바인딩 핸들이 있어야 합니다. 따라서 UUID만 기존 항목으로 내보내는 것은 효과가 없으며 모든 바인딩 핸들을 내보내지 않으면 항목이 삭제됩니다.

참고

rpcnsi.h 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 RpcNsBindingExport를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

추가 정보

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf