Partilhar via


Implementação e registrando um fornecedor de porta

A função de um fornecedor de porta é controlar e portas, que por sua vez, gerenciar processos de fornecimento. No momento em que uma porta precisa ser criado, o fornecedor de porta é instanciado usando CoCreate com GUID do fornecedor de porta (o Gerenciador de sessão de depuração [SDM] usará o usuário selecionado do fornecedor de porta ou o fornecedor de porta especificado pelo sistema do projeto). Em seguida, chamará o SDM IDebugPortSupplier2::CanAddPort para ver se todas as portas podem ser adicionadas. Se uma porta pode ser adicionada, uma nova porta é solicitada, chamando IDebugPortSupplier2::AddPort e passando um IDebugPortRequest2 que descreve a porta. AddPortretornará uma nova porta representada por um IDebugPort2 interface.

Discussão

Uma porta é criada por um fornecedor de porta, que por sua vez associado com um servidor de depuração ou de máquina. Um servidor pode enumerar a seus fornecedores de porta por meio aIDebugCoreServer2::EnumPortSuppliers método e um fornecedor de porta podem enumerar suas portas através do IDebugPortSupplier2::EnumPorts método.

Com o registro COM típico, um fornecedor de porta deve ser registrado com Visual Studio, colocando seu nome e o CLSID em locais específicos do registro. Uma função auxiliar do SDK de depuração chamado SetMetric manipula esta tarefa: ele é chamado uma vez para cada item a ser registrado, assim:

SetMetric(metrictypePortSupplier,
          <GUID of your port supplier>,
          metricCLSID,
          <CLSID of your port supplier>,
          false,
          NULL)
SetMetric(metrictypePortSupplier,
          <GUID of your port supplier>,
          metricName,
          <name of your port supplier>,
          false,
          NULL);

Um fornecedor de porta cancela registro próprio chamando RemoveMetric (outra função de auxiliar de depuração SDK) uma vez para cada item que foi registrado, assim:

RemoveMetric(metrictypePortSupplier,
             <GUID of your port supplier>,
             metricCLSID,
             NULL);
RemoveMetric(metrictypePortSupplier,
             <GUID of your port supplier>,
             metricName,
             NULL);

Dica

O SDK auxiliares para depuraçãoSetMetric e RemoveMetric são funções estáticas definido em dbgmetric.h e compilados em ad2de.lib.O metrictypePortSupplier, metricCLSID, e metricName auxiliares também são definidos no dbgmetric.h.

Um fornecedor de porta pode fornecer seu nome e o GUID através dos métodos IDebugPortSupplier2::GetPortSupplierName e IDebugPortSupplier2::GetPortSupplierId, respectivamente.

Consulte também

Referência

SDK auxiliares para depuração

Conceitos

Fornecedores de porta

Outros recursos

A implementação de um fornecedor de porta