Distribuzione e la registrazione di un fornitore di porte
Il ruolo di un fornitore di porte è gli hole della modalità e di rilevare, che a sua volta gestiscono i processi. Quindi una porta deve essere creata, il fornitore di porte viene creata un'istanza utilizzando CoCreate con il GUID del fornitore di porte (la sessione l'amministratore di debug che [SDM] utilizzerà il fornitore di porte l'utente selezionato o il fornitore di porte specificato dal sistema del progetto). Lo SDM chiamerà IDebugPortSupplier2:: CanAddPort per vedere se le porte è possibile aggiungere. Se una porta è possibile aggiungere, una nuova porta è necessaria chiamandola IDebugPortSupplier2:: AddPort e passando IDebugPortRequest2 che descrive la porta. AddPort restituirà una nuova porta rappresentata IDebugPort2 da un'interfaccia.
Descrizione
Una porta viene creata da un fornitore di porte, che è a sua volta associato a un computer o un server di debug. Un server può enumerare i fornitori di porte conIDebugCoreServer2:: EnumPortSuppliers il metodo e un fornitore di porte possibile enumerare le porte dal IDebugPortSupplier2:: EnumPorts metodo.
Oltre alla registrazione tipica COM, un fornitore di porte necessario registrarsi con Visual Studio inserendo il relativo CLSID e nome in percorsi specifici del Registro di sistema. Un debug l'sdk SetMetric chiamato funzione di supporto che gestisce questo lavoretto: viene chiamato una volta per ciascun elemento venga registrato, nel modo seguente:
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);
Un fornitore di porte si annulla la registrazione chiamando RemoveMetric (un'altra funzione di supporto di debug SDK) una volta per ogni elemento che è stato registrato, nel modo seguente:
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
NULL);
Nota
Supporto di SDK per il debugSetMetric e RemoveMetric sono funzioni statiche definite in dbgmetric.h e compilate in ad2de.lib.metrictypePortSupplier, metricCLSIDe gli helpermetricName vengono inoltre definiti in dbgmetric.h.
Un fornitore di porte possibile fornire il nome e GUID dai metodi IDebugPortSupplier2:: GetPortSupplierName e IDebugPortSupplier2:: GetPortSupplierId, rispettivamente.