다음을 통해 공유


알림 지원

업데이트: 2007년 11월

공급자 및 소비자에 연결 지점 인터페이스 구현

알림을 구현하려면 공급자 클래스가 IRowsetNotifyCPIConnectionPointContainer에서 상속해야 합니다.

IRowsetNotifyCP는 연결 지점 인터페이스 IRowsetNotify에 대한 공급자 사이트를 구현합니다. IRowsetNotifyCP는 연결 지점 IID_IRowsetNotify의 수신자에게 행 집합의 내용에 발생한 변경 내용을 알리기 위한 브로드캐스트 기능을 구현합니다.

또한 IRowsetNotifyImpl을 사용하여 소비자(싱크)에 IRowsetNotify를 구현하고 등록하여 소비자가 알림을 처리할 수 있도록 해야 합니다. 소비자에 연결 지점 인터페이스를 구현하는 것에 대한 자세한 내용은 알림 수신을 참조하십시오.

뿐만 아니라 클래스에 다음과 같이 연결 지점 항목을 정의하는 맵을 포함해야 합니다.

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

IRowsetNotify 추가

IRowsetNotify를 추가하려면 상속 체인에 IConnectionPointContainerImpl<rowset-name> 및 IRowsetNotifyCP<rowset-name>를 추가해야 합니다.

예를 들어, 다음은 UpdatePV의 RUpdateRowset에 대한 상속 체인입니다.

참고:

샘플 코드와 여기에 있는 코드가 다르면 샘플 코드가 더 최신 버전입니다.

///////////////////////////////////////////////////////////////////////////
// class RUpdateRowset (in rowset.h)

class RUpdateRowset : 
public CRowsetImpl< RUpdateRowset, CAgentMan, CUpdateCommand, 
         CAtlArray< CAgentMan, CAtlArray<CAgentMan> >, CSimpleRow, 
         IRowsetScrollImpl< RUpdateRowset, IRowsetScroll > >,
      public IRowsetUpdateImpl< RUpdateRowset, CAgentMan >,
      public IConnectionPointContainerImpl<RUpdateRowset>,
      public IRowsetNotifyCP<RUpdateRowset>

COM 맵 엔트리 설정

또한 행 집합의 COM 맵에 다음을 추가해야 합니다.

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

이러한 매크로는 연결 지점 컨테이너(IRowsetNotify의 기본)에 QueryInterface를 호출하는 사람이 요청한 인터페이스를 공급자에서 찾을 수 있도록 합니다. 연결 지점 사용법에 대한 예제는 ATL POLYGON 샘플과 자습서를 참조하십시오.

연결 지점 맵 엔트리 설정

연결 지점 맵을 추가해야 합니다. 연결 지점 맵은 다음과 비슷합니다.

BEGIN_CONNECTION_POINT_MAP(rowset-name)
     CONNECTION_POINT_ENTRY(_uuidof(IRowsetNotify))
END_CONNECTION_POINT_MAP()

이 연결 지점 맵은 IRowsetNotify 인터페이스를 찾는 구성 요소가 공급자에서 인터페이스를 찾을 수 있도록 합니다.

속성 설정

공급자에 다음 속성을 추가해야 합니다. 지원하는 인터페이스를 기준으로 속성을 추가하면 됩니다.

속성

지원할 경우 추가

DBPROP_IConnectionPointContainer

항상

DBPROP_NOTIFICATIONGRANULARITY

항상

DBPROP_NOTIFICATIONPHASES

항상

DBPROP_NOTIFYCOLUMNSET

IRowsetChange

DBPROP_NOTIFYROWDELETE

IRowsetChange

DBPROP_NOTIFYROWINSERT

IRowsetChange

DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE

항상

DBPROP_NOTIFYROWFIRSTCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWSETRELEASE

항상

DBPROP_NOTIFYROWUNDOCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWUNDODELETE

IRowsetUpdate

DBPROP_NOTIFYROWUNDOINSERT

IRowsetUpdate

DBPROP_NOTIFYROWUPDATE

IRowsetUpdate

알림에 대한 대부분의 구현은 OLE DB 공급자 템플릿에 포함되어 있습니다. 상속 체인에 IRowsetNotifyCP를 추가하지 않으면 Visual C++ .NET의 컴파일러 기능으로 인해 컴파일러가 컴파일 스트림에서 모든 해당 코드를 제거하므로 코드 크기가 작아집니다.

참고 항목

개념

고급 공급자 기술