Condividi tramite


Database della porta COM

Il database delle porte COM fornito dal sistema arbitra l'uso dei numeri di porta COM dalle porte COM installate nel sistema. Microsoft Windows fornisce questo componente per facilitare l'installazione delle porte COM e, in particolare, per garantire che ogni numero di porta venga assegnato, al massimo, a una porta. Il componente è costituito dal database e da una libreria contenente funzioni chiamate dal software di installazione per accedere al database. Tutti i programmi di installazione forniti dal sistema per le porte COM usano il database della porta COM per ottenere un numero di porta COM. Anche se non è un requisito Plug and Play, tutti i programmi di installazione forniti dal fornitore devono usare anche il database delle porte COM per ottenere un numero di porta COM.

Per informazioni sulle routine che supportano il database delle porte COM, vedere le routine di supporto del database COMPort:

ComDBClaimNextFreePort

ComDBClaimPort

ComDBClose

ComDBGetCurrentPortUsage

ComDBOpen

ComDBReleasePort

ComDBResizeDatabase

Vedere anche le routine seguenti:

SerialDisplayAdvancedSettings, che è una routine fornita dal sistema per l'installazione di una pagina delle proprietà avanzate per una porta COM

PPORT_ADVANCED_DIALOG routine tipizzata, che fornisce una finestra di dialogo fornita dal fornitore facoltativo chiamata da SerialDisplayAdvancedSettings

Per chiamare queste routine in un programma di installazione, collegare il programma di installazione a msport.lib, fornito con Windows Driver Kit (WDK).

Struttura del database della porta COM

Il database della porta COM è costituito da una matrice di elementi, ognuno dei quali indica se è in uso un numero di porta COM. Il primo elemento della matrice corrisponde a COM1, il secondo corrisponde a COM2 e così via. Tuttavia, il database non contiene informazioni sul dispositivo a cui è assegnato un determinato numero di porta. Le dimensioni del database sono uguali al numero di numeri di porta attualmente arbitrati del database. Il numero minimo di numeri di porta arbitrati del database è COMDB_MIN_PORTS_ARBITRATED e il numero massimo arbitrates è COMDB_MAX_PORTS_ARBITRATED. Le dimensioni del database possono essere aumentate usando la routine ComDBResizeDatabase .

Apertura e chiusura del database della porta COM

Prima di utilizzare il database della porta COM, un client deve aprire il database chiamando la routine ComDBOpen per ottenere un handle per il database. Il database è protetto dall'esclusione reciproca durante qualsiasi accesso continuo al database. Tuttavia, il database non può essere aperto per uso esclusivo e il relativo stato può cambiare dinamicamente tra accessi distinti al database.

Determinazione dell'utilizzo corrente dei numeri di porta COM

Dopo aver aperto il database della porta COM, un client può determinare quali numeri di porta COM sono già in uso chiamando la routine ComDBGetCurrentPortUsage .

Un client esegue in genere le attività seguenti:

  1. Chiama la routine per determinare il numero di numeri di porta attualmente abitrati nel database.

  2. Chiama la routine una seconda volta per restituire informazioni sull'utilizzo del numero di porta in una matrice di bit allocata dal chiamante o in una matrice di byte, in cui ogni bit o byte specifica se il numero di porta corrispondente è in uso.

Se tutti i numeri di porta nel database sono in uso o non è attualmente disponibile alcun numero di porta appropriato, il client può ridimensionare il database. Per altre informazioni, vedere Ridimensionamento del database della porta COM.

Recupero e rilascio di un numero di porta COM

Un client può ottenere un numero di porta COM chiamando una delle routine seguenti:

La richiesta di un numero di porta COM nel database della porta COM registra il numero di porta come "in uso".

Un client rilascia un numero di porta chiamando la routine ComDBReleasePort .

Ridimensionamento del database della porta COM

Un client può ridimensionare il database della porta COM chiamando la routine ComDBResizeDatabase . Un client può aumentare solo le dimensioni del database per multipli interi di 1024. Le dimensioni massime del database sono COMDB_MAX_PORTS_ARBITRATED.