Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função de um fornecedor de portos é monitorar e fornecer portos, que, por sua vez, gerenciam processos. Quando uma porta precisa ser criada, o fornecedor de porta é instanciado usando CoCreate com o GUID do fornecedor de porta (o Session Debug Manager [SDM] usará o fornecedor de porta que o usuário selecionou ou o fornecedor de porta especificado pelo sistema de projetos). Em seguida, o SDM chama CanAddPort para ver se alguma porta pode ser adicionada. Se uma porta puder ser adicionada, uma nova porta será solicitada chamando AddPort e passando uma IDebugPortRequest2 que descreve a porta.
AddPort retorna uma nova porta representada por uma interface IDebugPort2 .
Discussão
Uma porta é criada por um fornecedor de porta, que está associado a um computador ou servidor de depuração. Um servidor enumera seus fornecedores de porta por meio do método EnumPortSuppliers e um fornecedor de porta enumera suas portas por meio do método EnumPorts .
Além do registro COM típico, um fornecedor de portas deve se registrar no Visual Studio colocando seu CLSID e seu nome em locais específicos do Registro do Windows. Uma função auxiliar do SDK de Depuração chamada SetMetric cuida dessa tarefa: ela é chamada uma vez para cada item a ser registrado, portanto:
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 seu próprio registro chamando RemoveMetric (outra função auxiliar do SDK de depuração) 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);
Observação
Os auxiliares do SDK para depuraçãoSetMetric e RemoveMetric são funções estáticas definidas em dbgmetric.h e compiladas em ad2de.lib. Os metrictypePortSupplier, metricCLSID e metricName auxiliares também são definidos em dbgmetric.h.
Um fornecedor de porta pode fornecer seu nome e GUID por meio dos métodos GetPortSupplierName e GetPortSupplierId, respectivamente.