Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il ruolo di un fornitore di servizi portuali consiste nel tenere traccia e fornire servizi ai porti, che a loro volta gestiscono i processi. Quando è necessario creare una porta, viene istanziato il fornitore della porta utilizzando CoCreate con il GUID del fornitore della porta (il gestore del debug della sessione [SDM] userà il fornitore della porta selezionato dall'utente o specificato dal sistema di progetto). SDM chiama quindi CanAddPort per verificare se è possibile aggiungere porte. Se è possibile aggiungere una porta, viene richiesta una nuova porta chiamando AddPort e passandole un IDebugPortRequest2 che descrive la porta.
AddPort restituisce una nuova porta rappresentata da un'interfaccia IDebugPort2.
Discussione
Una porta viene creata da un fornitore di porte, associato a un computer o a un server di debug. Un server enumera i fornitori di porte tramite il metodo EnumPortSuppliers e un fornitore di porte enumera le porte tramite il metodo EnumPorts.
Oltre alla tipica registrazione COM, un fornitore di porte deve registrarsi con Visual Studio inserendo il relativo CLSID e il nome in posizioni specifiche del Registro di sistema. Una funzione helper dell'SDK di debug denominata SetMetric gestisce questo problema: viene chiamata una volta per ogni elemento da registrare, quindi:
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 annulla la registrazione invocando RemoveMetric (una funzione di supporto del SDK di Debug) una volta per ogni elemento registrato, in questo modo:
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
NULL);
Nota
Gli helper sdk di per il debug diSetMetric e RemoveMetric sono funzioni statiche definite in dbgmetric.h e compilate in ad2de.lib. Gli helper metrictypePortSupplier, metricCLSIDe metricName sono definiti anche in dbgmetric.h.
Un fornitore di porte può specificare il nome e il GUID tramite i metodi GetPortSupplierName e GetPortSupplierIdrispettivamente.