Partilhar via


Banco de Dados de Porta COM

O banco de dados de porta COM fornecido pelo sistema arbitra o uso de números de porta COM por portas COM instaladas no sistema. O Microsoft Windows fornece esse componente para facilitar a instalação de portas COM e, em particular, para garantir que cada número de porta seja atribuído, no máximo, a uma porta. O componente consiste no banco de dados e em uma biblioteca que contém funções que o software de instalação chama para acessar o banco de dados. Todos os instaladores fornecidos pelo sistema para portas COM usam o banco de dados de porta COM para obter um número de porta COM. Embora não seja um requisito Plug and Play, todos os instaladores fornecidos pelo fornecedor também devem usar o banco de dados de porta COM para obter um número de porta COM.

Para obter informações sobre rotinas que dão suporte ao banco de dados de porta COM, consulte as rotinas de suporte do banco de dados COMPort:

ComDBClaimNextFreePort

ComDBClaimPort

ComDBClose

ComDBGetCurrentPortUsage

ComDBOpen

ComDBReleasePort

ComDBResizeDatabase

Além disso, confira as seguintes rotinas:

SerialDisplayAdvancedSettings, que é uma rotina fornecida pelo sistema para instalar uma página de propriedades avançadas para uma porta COM

PPORT_ADVANCED_DIALOG rotina tipada, que fornece uma caixa de diálogo opcional fornecida pelo fornecedor que é chamada por SerialDisplayAdvancedSettings

Para chamar essas rotinas em um instalador, vincule o instalador ao msports.lib, que é fornecido com o WDK (Windows Driver Kit).

Estrutura do banco de dados de porta COM

O banco de dados de porta COM consiste em uma matriz de elementos, cada um dos quais indica se um número de porta COM está em uso. O primeiro elemento de matriz corresponde a COM1, o segundo corresponde a COM2 e assim por diante. No entanto, o banco de dados não contém nenhuma informação sobre qual dispositivo recebe um determinado número de porta. O tamanho do banco de dados é igual ao número de números de porta que o banco de dados arbitra no momento. O número mínimo de números de porta que o banco de dados arbitra é COMDB_MIN_PORTS_ARBITRATED e o número máximo que ele arbitra é COMDB_MAX_PORTS_ARBITRATED. O tamanho do banco de dados pode ser aumentado usando a rotina ComDBResizeDatabase .

Abrindo e fechando o banco de dados de porta COM

Antes de usar o banco de dados de porta COM, um cliente deve abrir o banco de dados chamando a rotina ComDBOpen para obter um identificador para o banco de dados. O banco de dados é protegido por exclusão mútua durante qualquer acesso contínuo ao banco de dados. No entanto, o banco de dados não pode ser aberto para uso exclusivo e seu estado pode mudar dinamicamente entre acessos distintos ao banco de dados.

Determinando o uso atual de números de porta COM

Depois de abrir o banco de dados de porta COM, um cliente pode determinar quais números de porta COM já estão em uso chamando a rotina ComDBGetCurrentPortUsage .

Um cliente normalmente executa as seguintes tarefas:

  1. Chama a rotina para determinar quantos números de porta estão sendo arbitrados no banco de dados.

  2. Chama a rotina uma segunda vez para retornar informações sobre o uso do número da porta em uma matriz de bits alocada pelo chamador ou matriz de bytes, em que cada bit ou byte especifica se o número da porta correspondente está em uso.

Se todos os números de porta no banco de dados estiverem em uso ou não houver um número de porta adequado disponível no momento, o cliente poderá redimensionar o banco de dados. Para obter mais informações, consulte Redimensionando o banco de dados de porta COM.

Obtendo e liberando um número de porta COM

Um cliente pode obter um número de porta COM chamando uma das seguintes rotinas:

A declaração de um número de porta COM no banco de dados de porta COM registra o número da porta como "em uso".

Um cliente libera um número de porta chamando a rotina ComDBReleasePort .

Redimensionando o banco de dados de porta COM

Um cliente pode redimensionar o banco de dados de porta COM chamando a rotina ComDBResizeDatabase . Um cliente só pode aumentar o tamanho do banco de dados por múltiplos inteiros de 1024. O tamanho máximo do banco de dados é COMDB_MAX_PORTS_ARBITRATED.