다음을 통해 공유


이름 서비스

DDEML(동적 데이터 교환 관리 라이브러리)을 사용하면 서버 애플리케이션이 지원하는 서비스 이름을 등록하고 DDEML이 지원되지 않는 서비스 이름에 대한 XTYP_CONNECT 트랜잭션을 서버의 DDE(동적 데이터 교환) 콜백 함수로 보내지 못하도록 할 수 있습니다.

다음 topics 이름 서비스에 대해 설명합니다.

서비스 이름 등록

DDEML에 서비스 이름을 등록하면 서버는 시스템의 다른 DDE 애플리케이션에 새 서버를 사용할 수 있음을 알릴 수 있습니다. 서버는 DdeNameService 함수를 호출하고 이름을 식별하는 문자열 핸들을 지정하여 서비스 이름을 등록합니다. 이에 대한 응답으로 DDEML은 시스템의 각 DDEML 애플리케이션의 콜백 함수에 XTYP_REGISTER 트랜잭션을 보냅니다( DdeInitialize 함수에서 CBF_SKIP_REGISTRATIONS 필터 플래그를 지정한 경우 제외). XTYP_REGISTER 트랜잭션은 콜백 함수에 두 개의 문자열 핸들을 전달합니다. 첫 번째는 기본 서비스 이름을 지정하는 문자열을 식별하고 두 번째는 instance 특정 서비스를 지정하는 문자열을 식별합니다. 클라이언트는 일반적으로 사용 가능한 서버 목록에서 기본 서비스 이름을 사용하므로 사용자는 목록에서 서버를 선택할 수 있습니다. 둘 이상의 instance 실행되는 경우 클라이언트는 instance 특정 서비스 이름을 사용하여 서버 애플리케이션의 특정 instance 대화를 설정합니다.

서버는 DdeNameService 를 사용하여 서비스 이름을 등록 취소할 수 있습니다. 이 함수를 사용하면 DDEML이 시스템의 다른 DDE 애플리케이션에 XTYP_UNREGISTER 트랜잭션을 보내 더 이상 이름을 사용하여 대화를 설정할 수 없음을 알릴 수 있습니다.

서버는 DdeInitialize를 호출한 직후 DdeNameService를 호출하여 서비스 이름을 등록해야 합니다. 서버는 DdeUninitialize 함수를 호출하기 직전에 DdeNameService를 사용하여 서비스 이름을 등록 취소해야 합니다.

서비스 이름 필터

서비스 이름을 등록하는 것 외에도 DdeNameService 를 사용하면 서버에서 서비스 이름 필터를 켜거나 끌 수 있습니다. 서버가 서비스 이름 필터를 해제하면 DDEML은 함수에 지정된 서비스 이름에 관계없이 클라이언트가 DdeConnect 함수를 호출할 때마다 XTYP_CONNECT 트랜잭션을 서버의 DDE 콜백 함수로 보냅니다. 서버가 서비스 이름 필터를 켜면 DdeConnectDdeNameService 호출에서 서버가 지정한 서비스 이름을 지정하는 경우에만 DDEML은 XTYP_CONNECT 트랜잭션을 서버로 보냅니다.

기본적으로 서비스 이름 필터는 애플리케이션이 DdeInitialize를 호출할 때 켜집니다. 이 기본값은 서버가 필요한 문자열 핸들을 만들기 전에 DDEML이 XTYP_CONNECT 트랜잭션을 서버로 보내는 것을 방지합니다. 서버는 DdeNameService 호출에서 DNS_FILTEROFF 플래그를 지정하여 서비스 이름 필터를 끌 수 있습니다. DNS_FILTERON 플래그는 필터를 켭니다.