다음을 통해 공유


RpcNsBindingUnexportA 함수(rpcnsi.h)

RpcNsBindingUnexport 함수는 name-service 데이터베이스의 항목에서 인터페이스 및 개체에 대한 바인딩 핸들을 제거합니다.

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

구문

RPC_STATUS RpcNsBindingUnexportA(
  unsigned long EntryNameSyntax,
  RPC_CSTR      EntryName,
  RPC_IF_HANDLE IfSpec,
  UUID_VECTOR   *ObjectUuidVec
);

매개 변수

EntryNameSyntax

EntryName 구문입니다.

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

EntryName

바인딩 핸들 및 개체 UUID를 제거할 항목 이름에 대한 포인터입니다.

IfSpec

이름 서비스 데이터베이스에서 제거할 바인딩 핸들의 인터페이스 사양입니다. null 매개 변수 값은 바인딩 핸들을 내보내지 않음을 나타냅니다(개체 UUID만 내보내지 않음).

ObjectUuidVec

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

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RPC_S_INVALID_VERS_OPTION
버전 옵션이 잘못되었습니다.
RPC_S_INVALID_NAME_SYNTAX
이름 구문이 잘못되었습니다.
RPC_S_UNSUPPORTED_NAME_SYNTAX
이름 구문은 지원되지 않습니다.
RPC_S_INCOMPLETE_NAME
이름이 불완전합니다.
RPC_S_ENTRY_NOT_FOUND
이름 서비스 항목을 찾을 수 없습니다.
RPC_S_NAME_SERVICE_UNAVAILABLE
이름 서비스를 사용할 수 없습니다.
RPC_S_INTERFACE_NOT_FOUND
인터페이스를 찾을 수 없습니다.
RPC_S_NOT_ALL_OBJS_UNEXPORTED
모든 개체가 노출되지 않는 것은 아닙니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcNsBindingUnexport 함수를 사용하면 서버 애플리케이션이 이름 서비스 데이터베이스 항목에서 리소스의 바인딩 핸들 및 개체 UUID를 제거할 수 있습니다. 서버 애플리케이션은 RpcNsBindingUnexport에 대한 단일 호출에서 지정된 인터페이스 및 개체를 제거하거나 별도로 노출 해제할 수 있습니다. 인터페이스 UUID와 일치하는 바인딩 핸들 및 IfSpec 매개 변수에 있는 주 및 부 인터페이스 버전 번호만 사용할 수 없습니다. RpcNsMgmtBindingUnexport 함수를 사용하여 여러 버전의 인터페이스를 제거합니다.

Windows 2000에서 적용되는 RPC 런타임 환경은 Active Directory를 이름 서비스 데이터베이스로 사용합니다. 즉, 권한 있는 승인되지 않은 항목이 로컬 캐시와 Active Directory에서 모두 제거됩니다. 승인되지 않은 내보내기 없음은 로컬 캐시에서만 제거됩니다. 권한 부여 및 Access Control Lists 대한 자세한 내용은 SDK(플랫폼 소프트웨어 개발 키트)의 보안 섹션에서 Access Control 참조하세요.

RpcNsBindingUnexport가 지정된 인터페이스에 대한 바인딩 핸들을 찾지 못하면 함수는 RPC_S_INTERFACE_NOT_FOUND 상태 코드를 반환하고 지정된 경우 개체 UUID를 제거하지 않습니다.

지정된 인터페이스에 대한 하나 이상의 바인딩 핸들이 오류 없이 발견되고 실행되지 않는 경우 RpcNsBindingUnexport 는 지정된 개체 UUID(있는 경우)를 내보내지 않습니다.

지정된 개체 UUID를 찾을 수 없는 경우 RpcNsBindingUnexport는 RPC_S_NOT_ALL_OBJS_UNEXPORTED 상태 코드를 반환합니다.

RpcNsBindingUnexport를 호출하는 것 외에도 서버는 RpcEpUnregister 함수를 호출하여 이전에 로컬 엔드포인트 맵 데이터베이스에 등록된 서버의 엔드포인트 등록을 취소해야 합니다.

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

RpcNsBindingUnexport를 신중하게 사용합니다. 자동으로 활성화된 서버를 사용할 수 있도록 하려면 서버 프로세스가 활성화된 시간 사이에 해당 바인딩 핸들을 이름 서비스 데이터베이스에 두어야 합니다. 그러나 동적 바인딩을 사용하면 바인딩 핸들을 내보내지 않으면 Active Directory가 관리 불가능할 정도로 커질 수 있습니다.

따라서 이 함수를 호출하기 전에 서버를 사용할 수 없을 것으로 예상되는 기간과 사용 중인 바인딩 유형을 염두에 두어야 합니다. 정적 바인딩을 사용하는 경우 서버가 서비스에서 영구적으로 제거되는 경우와 같이 서버를 장기간 사용할 수 없을 것으로 예상되는 경우에 대해 이 함수를 예약합니다.

참고 이름 서비스 데이터베이스는 비교적 안정적으로 설계되었습니다. 복제된 이름 서비스 데이터베이스에서 RpcNsBindingExportRpcNsBindingUnexport 함수를 자주 사용하면 이름 서비스 데이터베이스가 동일한 항목을 반복적으로 제거하고 대체하며 성능 문제가 발생할 수 있습니다.
 

참고

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

요구 사항

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

추가 정보

RpcEpUnregister

RpcNsBindingExport