Partilhar via


Notificações de suporte

Implementando 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 de interface de ponto de conexão IRowsetNotify.IRowsetNotifyCPimplementa funções para informar ouvintes sobre o ponto de conexão de difusão IID_IRowsetNotify de alterações no conteúdo do conjunto de linhas.

Observe que você também deve implementar e registrar IRowsetNotify no 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

Adicionando IRowsetNotify

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

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

ObservaçãoObservação

O exemplo de código pode diferir do que está listado aqui; Você deve considerar o código de exemplo 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>

at4a5k5t.collapse_all(pt-br,VS.110).gifDefinindo entradas de mapa COM

Você também precisa adicionar o seguinte ao 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 localizar a interface solicitada no seu provedor.Para obter um exemplo de como usar pontos de conexão, consulte o exemplo de POLÍGONO de ATL e tutorial.

at4a5k5t.collapse_all(pt-br,VS.110).gifDefinindo entradas de mapa de ponto de conexão

Você também precisará adicionar um mapa de ponto de conexão.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 encontrá-la no seu provedor.

at4a5k5t.collapse_all(pt-br,VS.110).gifDefinindo propriedades

Você também precisa adicionar as seguintes propriedades ao seu provedor.Você só precisa adicionar propriedades com base em interfaces de suporte.

Propriedade

Adicionar se você 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á está incorporado em 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 de seu fluxo de compilação, tornando seu tamanho código menor.

Consulte também

Conceitos

Técnicas avançadas de provedor