Partage via


Implémenter et inscrire un fournisseur de ports

Le rôle d’un fournisseur de ports est de suivre et de fournir des ports, qui à leur tour gèrent les processus. Lorsqu’un port doit être créé, le fournisseur de ports est instancié à l’aide de CoCreate avec le GUID du fournisseur de ports (le gestionnaire de débogage de session [SDM] utilisera le fournisseur de ports que l’utilisateur a sélectionné ou le fournisseur de ports spécifié par le système de projet). Le SDM appelle ensuite CanAddPort pour voir si des ports peuvent être ajoutés. Si un port peut être ajouté, un nouveau port est demandé en appelant AddPort et en lui transmettant un IDebugPortRequest2 qui décrit le port. AddPort retourne un nouveau port représenté par une interface IDebugPort2.

Discussion

Un port est créé par un fournisseur de ports, associé à un ordinateur ou à un serveur de débogage. Un serveur énumère ses fournisseurs de ports via la méthode EnumPortSuppliers et un fournisseur de ports énumère ses ports via la méthode EnumPorts.

En plus de l’inscription COM classique, un fournisseur de ports doit s’inscrire auprès de Visual Studio en plaçant son CLSID et son nom dans des emplacements de Registre spécifiques. Une fonction d’assistance du Kit de développement logiciel (SDK) de débogage appelée SetMetric gère cette tâche : elle est appelée une fois pour que chaque élément soit inscrit, par conséquent :

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 fournisseur de ports se désinscrit en appelant RemoveMetric (une autre fonction d’assistance du Kit de développement logiciel (SDK) une fois pour chaque élément inscrit, par conséquent :

RemoveMetric(metrictypePortSupplier,
             <GUID of your port supplier>,
             metricCLSID,
             NULL);
RemoveMetric(metrictypePortSupplier,
             <GUID of your port supplier>,
             metricName,
             NULL);

Remarque

Les helpers du Kit de développement logiciel (SDK) pour le débogageSetMetric et les RemoveMetric sont des fonctions statiques définies dans dbgmetric.h et compilées dans ad2de.lib. Les aides metrictypePortSupplier, metricCLSID, et metricName sont également définies dans dbgmetric.h.

Un fournisseur de ports peut fournir son nom et son GUID via les méthodes GetPortSupplierName et GetPortSupplierId, respectivement.