Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O papel de um fornecedor portuário é rastrear e abastecer 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 gerenciador de depuração de sessão [SDM] usará o fornecedor de porta que o usuário selecionou ou o fornecedor de porta especificado pelo sistema de projeto). Em seguida, o SDM chama CanAddPort para ver se alguma porta pode ser adicionada. Se uma porta puder ser adicionada, uma nova porta é solicitada chamando AddPort e passando-lhe um IDebugPortRequest2 que descreve a porta.
AddPort retorna uma nova porta representada por um IDebugPort2 interface.
Discussão
Uma porta é criada por um fornecedor de porta, que está associado a uma máquina ou servidor de depuração. Um servidor enumera os seus fornecedores de portas através do método EnumPortSuppliers, e um fornecedor de porta enumera as suas portas através do método EnumPorts.
Além do registro COM típico, um fornecedor de porta deve se registrar no Visual Studio colocando seu CLSID e nome em locais de registro específicos. Uma função auxiliar do SDK de depuração chamada SetMetric lida com essa tarefa: ela é chamada 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 o 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 auxiliares metrictypePortSupplier, metricCLSIDe metricName também são definidos em dbgmetric.h.
Um fornecedor de porta pode fornecer seu nome e GUID através dos métodos GetPortSupplierName e GetPortSupplierId, respectivamente.