포트 공급자의 역할은 포트를 추적하고 제공하는 것이며, 이 포트는 프로세스를 관리합니다. 포트를 만들어야 하는 경우 포트 공급자는 포트 공급자의 GUID와 함께 CoCreate를 사용하여 인스턴스화됩니다(세션 디버그 관리자 [SDM]은 사용자가 선택한 포트 공급자 또는 프로젝트 시스템에서 지정한 포트 공급자를 사용합니다). 그런 다음 SDM은 CanAddPort 호출하여 포트를 추가할 수 있는지 확인합니다. 포트를 추가할 수 있는 경우 AddPort 호출하고 포트를 설명하는 IDebugPortRequest2 전달하여 새 포트를 요청합니다.
AddPort
IDebugPort2 인터페이스로 표시되는 새 포트를 반환합니다.
토론
포트는 컴퓨터 또는 디버그 서버와 연결된 포트 공급자에 의해 생성됩니다. 서버는 EnumPortSuppliers 메서드를 통해 해당 포트 공급자를 열거하고 포트 공급자는 EnumPorts 메서드를 통해 해당 포트를 열거합니다.
포트 공급자는 일반적인 COM 등록 외에도 CLSID 및 이름을 특정 레지스트리 위치에 배치하여 Visual Studio에 등록해야 합니다.
SetMetric이라는 디버깅 SDK 헬퍼 함수는 이 작업을 처리합니다. 각 항목이 등록될 때마다 한 번씩 호출됩니다.
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);
포트 공급자는 등록된 각 항목에 대해 RemoveMetric(다른 디버깅 SDK 도우미 함수)를 한 번 호출하여 등록을 취소합니다.
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricCLSID,
NULL);
RemoveMetric(metrictypePortSupplier,
<GUID of your port supplier>,
metricName,
NULL);
메모
SDK 도우미는 SetMetric 정의되고 RemoveMetric컴파일된 정적 함수입니다.
metrictypePortSupplier, metricCLSID및 metricName 도우미도 dbgmetric.h정의됩니다.
포트 공급자는 GetPortSupplierName 및 GetPortSupplierId 메서드를 통해 이름과 GUID를 각각 제공할 수 있습니다.