Zaimplementuj i zarejestruj dostawcę portu
Rolą dostawcy portów jest śledzenie i dostarczanie portów, które z kolei zarządzają procesami. Gdy zachodzi potrzeba utworzenia portu, dostawca portu jest tworzony przy użyciu funkcji CoCreate z identyfikatorem GUID dostawcy portu (menedżer debugowania sesji [SDM] użyje dostawcy portu wybranego przez użytkownika lub dostawcy portu określonego przez system projektu). Następnie SDM wywołuje CanAddPort, aby sprawdzić, czy można dodać jakiekolwiek porty. Jeśli można dodać port, nowy port jest żądany poprzez wywołanie funkcji AddPort i przekazanie mu IDebugPortRequest2, który opisuje port.
AddPort
zwraca nowy port reprezentowany przez interfejs IDebugPort 2.
Dyskusja
Port jest tworzony przez dostawcę portów, który jest skojarzony z maszyną lub serwerem debugowania. Serwer wylicza dostawców portów za pośrednictwem metody EnumPortSuppliers, a dostawca portów wylicza porty za pośrednictwem metody EnumPorts.
Oprócz typowej rejestracji COM dostawca portów musi zarejestrować się w programie Visual Studio, umieszczając jego CLSID i nazwę w określonych lokalizacjach rejestru. Funkcja pomocnicza SDK do debugowania o nazwie SetMetric
realizuje to zadanie: jest wywoływana każdorazowo dla każdego elementu do zarejestrowania.
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);
Dostawca portów wyrejestruje się przez wywołanie RemoveMetric
(innej funkcji pomocnika zestawu SDK debugowania) raz dla każdego zarejestrowanego elementu w ten sposób:
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
NULL);
Notatka
Pomocnicy zestawu SDK do debugowaniaSetMetric
i RemoveMetric
to funkcje statyczne zdefiniowane w dbgmetric.h i skompilowane w ad2de.lib. Pomocnicy metrictypePortSupplier
, metricCLSID
i metricName
są również zdefiniowane w dbgmetric.h.
Dostawca portów może podać jego nazwę i identyfikator GUID za pomocą metod GetPortSupplierName i GetPortSupplierId, odpowiednio.
Powiązana zawartość
- Zaimplementować dostawcę portów
- Narzędzia pomocnicze zestawu SDK do debugowania
- dostawcy portów