Partilhar via


Usando IConnectionPoint

Quando o cliente tem um ponteiro para um ponto de conexão, pode realizar as seguintes operações conforme expresso através de IConnectionPoint:

  • Primeiro, IConnectionPoint::GetConnectionInterface recupera a interface de saída IID suportada pelo ponto de conexão. Quando usado em conjunto com IEnumConnectionPoints, esse método permite que o cliente examine os IIDs de todas as interfaces de saída suportadas no objeto conectável.
  • Em segundo lugar, um cliente pode navegar do ponto de conexão de volta para o do objeto conectável IConnectionPointContainer interface através do IConnectionPoint::GetConnectionPointContainer método.
  • Em terceiro lugar, os métodos mais interessantes para o cliente são IConnectionPoint::Advise e IConnectionPoint::Unadvise. Quando um cliente deseja conectar seu próprio objeto de coletor ao objeto conectável, o cliente passa o ponteiro IUnknownIUnknown docoletor (ou qualquer outro ponteiro de interface no mesmo objeto) para Advise. O ponto de conexão consulta o coletor para a interface de saída específica esperada. Se essa interface estiver disponível no coletor, o ponto de conexão armazenará o ponteiro da interface. A partir deste ponto até que Unadvise seja chamado, o objeto conectável fará chamadas para o sink através desta interface quando ocorrerem eventos. Para desconectar o coletor do ponto de conexão, o cliente passa uma chave retornada de Advise para o método Unadvise. Unadvise deve chamar Release na interface de sincronização.
  • Finalmente, um cliente pode solicitar a um ponto de conexão que enumere todas as conexões existentes para ele através do IConnectionPoint::EnumConnections. Esse método cria um objeto enumerador (com uma contagem de referência separada) retornando um ponteiro IEnumConnections para ele. O cliente deve chamar Release quando o enumerador não for mais necessário. Além disso, o enumerador retorna uma série de CONNECTDATA estruturas, uma para cada conexão. Cada estrutura descreve uma conexão usando o ponteiro IUnknown do recetor, bem como a chave de conexão originalmente retornada do Advise. Quando terminar de usar esses ponteiros de interface do coletor, o cliente deve chamar Release em cada ponteiro retornado numa estrutura CONNECTDATA.

Interfaces de objeto conectáveis