Share via


Base de données de ports COM

La base de données de ports COM fournie par le système arbitre l’utilisation des numéros de port COM par les ports COM installés sur le système. Microsoft Windows fournit ce composant pour faciliter l’installation des ports COM et, en particulier, pour s’assurer que chaque numéro de port est affecté, au maximum, à un port. Le composant se compose de la base de données et d’une bibliothèque contenant des fonctions que le logiciel d’installation appelle pour accéder à la base de données. Tous les programmes d’installation fournis par le système pour les ports COM utilisent la base de données de ports COM pour obtenir un numéro de port COM. Bien qu’il ne s’agisse pas d’une exigence Plug-and-Play, tous les programmes d’installation fournis par le fournisseur doivent également utiliser la base de données de port COM pour obtenir un numéro de port COM.

Pour plus d’informations sur les routines qui prennent en charge la base de données de ports COM, consultez les routines de prise en charge de la base de données COMPort :

ComDBClaimNextFreePort

ComDBClaimPort

ComDBClose

ComDBGetCurrentPortUsage

ComDBOpen

ComDBReleasePort

ComDBResizeDatabase

Consultez également les routines suivantes :

SerialDisplayAdvancedSettings, qui est une routine fournie par le système pour l’installation d’une page de propriétés avancées pour un port COM

PPORT_ADVANCED_DIALOG routine de type, qui fournit une boîte de dialogue facultative fournie par le fournisseur appelée par SerialDisplayAdvancedSettings

Pour appeler ces routines dans un programme d’installation, liez le programme d’installation à msports.lib, qui est fourni avec le Kit de pilotes Windows (WDK).

Structure de la base de données de ports COM

La base de données de ports COM se compose d’un tableau d’éléments, chacun d’entre eux indiquant si un numéro de port COM est en cours d’utilisation. Le premier élément de tableau correspond à COM1, le second correspond à COM2, et ainsi de suite. Toutefois, la base de données ne contient aucune information sur l’appareil affecté à un numéro de port donné. La taille de la base de données est égale au nombre de numéros de port que la base de données arbitre actuellement. Nombre minimal de numéros de port que la base de données arbitrates est COMDB_MIN_PORTS_ARBITRATED, et le nombre maximal qu’elle arbitrate est COMDB_MAX_PORTS_ARBITRATED. La taille de la base de données peut être augmentée à l’aide de la routine ComDBResizeDatabase .

Ouverture et fermeture de la base de données de ports COM

Avant d’utiliser la base de données de port COM, un client doit ouvrir la base de données en appelant la routine ComDBOpen pour obtenir un handle pour la base de données. La base de données est protégée par une exclusion mutuelle pendant tout accès continu à la base de données. Toutefois, la base de données ne peut pas être ouverte pour une utilisation exclusive et son état peut changer dynamiquement entre des accès distincts à la base de données.

Détermination de l’utilisation actuelle des numéros de port COM

Après avoir ouvert la base de données de ports COM, un client peut déterminer quels numéros de port COM sont déjà utilisés en appelant la routine ComDBGetCurrentPortUsage .

Un client effectue généralement les tâches suivantes :

  1. Appelle la routine pour déterminer le nombre de numéros de port actuellement arbitrés dans la base de données.

  2. Appelle la routine une deuxième fois pour retourner des informations sur l’utilisation du numéro de port dans un tableau de bits ou un tableau d’octets alloués par l’appelant, où chaque bit ou octet spécifie si le numéro de port correspondant est utilisé.

Si tous les numéros de port de la base de données sont en cours d’utilisation ou s’il n’existe aucun numéro de port approprié actuellement disponible, le client peut redimensionner la base de données. Pour plus d’informations, consultez Redimensionnement de la base de données de ports COM.

Obtention et publication d’un numéro de port COM

Un client peut obtenir un numéro de port COM en appelant l’une des routines suivantes :

La revendication d’un numéro de port COM dans la base de données de port COM journalise le numéro de port comme « en cours d’utilisation ».

Un client libère un numéro de port en appelant la routine ComDBReleasePort .

Redimensionnement de la base de données de ports COM

Un client peut redimensionner la base de données de ports COM en appelant la routine ComDBResizeDatabase . Un client peut uniquement augmenter la taille de la base de données par des multiples entiers de 1024. La taille maximale de la base de données est COMDB_MAX_PORTS_ARBITRATED.