Base de datos de puerto COM
La base de datos de puertos COM proporcionada por el sistema arbitra el uso de números de puerto COM por puertos COM instalados en el sistema. Microsoft Windows proporciona este componente para facilitar la instalación de puertos COM y, en particular, para asegurarse de que se asigna cada número de puerto, como máximo, a un puerto. El componente consta de la base de datos y una biblioteca que contiene funciones a las que llama el software de instalación para acceder a la base de datos. Todos los instaladores proporcionados por el sistema para los puertos COM usan la base de datos de puertos COM para obtener un número de puerto COM. Aunque no es un requisito de Plug and Play, todos los instaladores proporcionados por el proveedor también deben usar la base de datos de puertos COM para obtener un número de puerto COM.
Para obtener información sobre las rutinas que admiten la base de datos de puertos COM, consulte las rutinas de compatibilidad de la base de datos COMPort:
Además, consulte las rutinas siguientes:
SerialDisplayAdvancedSettings, que es una rutina proporcionada por el sistema para instalar una página de propiedades avanzadas para un puerto COM
PPORT_ADVANCED_DIALOG rutina con tipo, que proporciona un cuadro de diálogo opcional proporcionado por el proveedor al que llama SerialDisplayAdvancedSettings.
Para llamar a estas rutinas en un instalador, vincule el instalador a m sports.lib, que se proporciona con el Kit de controladores de Windows (WDK).
Estructura de la base de datos de puerto COM
La base de datos de puertos COM consta de una matriz de elementos, cada uno de los cuales indica si un número de puerto COM está en uso. El primer elemento de matriz corresponde a COM1, el segundo corresponde a COM2, etc. Sin embargo, la base de datos no contiene ninguna información sobre qué dispositivo tiene asignado un número de puerto determinado. El tamaño de la base de datos es igual al número de números de puerto que actualmente arbitra la base de datos. El número mínimo de números de puerto que la base de datos arbitra es COMDB_MIN_PORTS_ARBITRATED y el número máximo que arbitra es COMDB_MAX_PORTS_ARBITRATED. El tamaño de la base de datos se puede aumentar mediante la rutina ComDBResizeDatabase .
Apertura y cierre de la base de datos de puerto COM
Antes de usar la base de datos de puertos COM, un cliente debe abrir la base de datos llamando a la rutina ComDBOpen para obtener un identificador de la base de datos. La base de datos está protegida por exclusión mutua durante cualquier acceso continuo a la base de datos. Sin embargo, la base de datos no se puede abrir para uso exclusivo y su estado puede cambiar dinámicamente entre distintos accesos a la base de datos.
Determinación del uso actual de números de puerto COM
Después de abrir la base de datos de puertos COM, un cliente puede determinar qué números de puerto COM ya están en uso llamando a la rutina ComDBGetCurrentPortUsage .
Normalmente, un cliente realiza las tareas siguientes:
Llama a la rutina para determinar cuántos números de puerto se están arbitrando actualmente en la base de datos.
Llama a la rutina una segunda vez para devolver información sobre el uso del número de puerto en una matriz de bits o matriz de bytes asignada por el autor de la llamada, donde cada bit o byte especifica si el número de puerto correspondiente está en uso.
Si todos los números de puerto de la base de datos están en uso o no hay ningún número de puerto adecuado disponible actualmente, el cliente puede cambiar el tamaño de la base de datos. Para obtener más información, vea Cambiar el tamaño de la base de datos de puerto COM.
Obtención y liberación de un número de puerto COM
Un cliente puede obtener un número de puerto COM llamando a una de las siguientes rutinas:
ComDBClaimNextFreePort, que reclama el número de puerto más bajo disponible.
ComDBClaimPort, que intenta reclamar un número de puerto específico.
La notificación de un número de puerto COM en la base de datos de puerto COM registra el número de puerto como "en uso".
Un cliente libera un número de puerto llamando a la rutina ComDBReleasePort .
Cambio del tamaño de la base de datos de puerto COM
Un cliente puede cambiar el tamaño de la base de datos de puerto COM llamando a la rutina ComDBResizeDatabase . Un cliente solo puede aumentar el tamaño de la base de datos por entero múltiplo de 1024. El tamaño máximo de la base de datos es COMDB_MAX_PORTS_ARBITRATED.