Partilhar via


Notificações de suporte.

A implementação de Interfaces de ponto de conexão no provedor e consumidor

Para implementar notificações, uma classe de provedor deve herdar de IRowsetNotifyCP e IConnectionPointContainer.

IRowsetNotifyCPimplementa o site do provedor para a interface de ponto de conexão IRowsetNotify. IRowsetNotifyCPfunções para informar os ouvintes no ponto de conexão de difusão implementa IID_IRowsetNotify de alterações no conteúdo do conjunto de linhas.

Observe que você também deve implementar e registrar IRowsetNotify o consumidor (também conhecido como o coletor) usando IRowsetNotifyImpl para que o consumidor pode manipular notificações. Para obter informações sobre como implementar a interface de ponto de conexão do consumidor, consulte Recebendo notificações.

Além disso, a classe também deve conter um mapa que define a entrada de ponto de conexão, como este:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

A adição de IRowsetNotify

Para adicionar IRowsetNotify, você precisará adicionar IConnectionPointContainerImpl<rowset-name> e IRowsetNotifyCP<rowset-name> em sua cadeia de herança.

Por exemplo, aqui está a cadeia de herança para RUpdateRowset na UpdatePV:

ObservaçãoObservação

O código de exemplo pode diferir do que está listado aqui. Você deve considerar o código de exemplo de como a versão mais atualizada.

///////////////////////////////////////////////////////////////////////////
// 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>

Entradas de configuração de mapa de COM

Você também precisará adicionar o seguinte para o mapa de COM em seu conjunto de linhas:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Essas macros permitem que qualquer pessoa chamando QueryInterface para o recipiente de ponto de conexão (a base de IRowsetNotify) para encontrar a interface solicitada no provedor. Para obter um exemplo de como usar os pontos de conexão, consulte o exemplo de POLÍGONO de ATL e o tutorial.

Definindo entradas de mapa de ponto de conexão

Você também precisará adicionar um mapa de ponto de conexão. Ele deve ser algo assim:

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

Este mapa de ponto de conexão permite que um componente procurando o IRowsetNotify interface para localizá-lo no seu provedor.

Setting Properties

Você também precisará adicionar propriedades a seguir ao seu provedor. Você só precisará adicionar propriedades com base nas interfaces que você dá suporte.

Property

Adicionar se você oferece suporte

DBPROP_IConnectionPointContainer

Sempre

DBPROP_NOTIFICATIONGRANULARITY

Sempre

DBPROP_NOTIFICATIONPHASES

Sempre

DBPROP_NOTIFYCOLUMNSET

IRowsetChange

DBPROP_NOTIFYROWDELETE

IRowsetChange

DBPROP_NOTIFYROWINSERT

IRowsetChange

DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE

Sempre

DBPROP_NOTIFYROWFIRSTCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWSETRELEASE

Sempre

DBPROP_NOTIFYROWUNDOCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWUNDODELETE

IRowsetUpdate

DBPROP_NOTIFYROWUNDOINSERT

IRowsetUpdate

DBPROP_NOTIFYROWUPDATE

IRowsetUpdate

A maioria da implementação para as notificações já é incorporado nos OLE DB Provider modelos. Devido a um recurso do compilador no Visual C++.NET, se você não adicionar IRowsetNotifyCP a sua cadeia de herança, o compilador remove todo código seu fluxo de compilação, tornando o tamanho do seu código menores.

Consulte também

Conceitos

Técnicas avançadas de provedor