COM-Portdatenbank
Die vom System bereitgestellte COM-Portdatenbank vermittelt die Verwendung von COM-Portnummern durch COM-Ports , die auf dem System installiert sind. Microsoft Windows bietet diese Komponente, um die Installation von COM-Ports zu erleichtern und insbesondere sicherzustellen, dass jede Portnummer höchstens einem Port zugewiesen wird. Die Komponente besteht aus der Datenbank und einer Bibliothek mit Funktionen, die die Installationssoftware aufruft, um auf die Datenbank zuzugreifen. Alle vom System bereitgestellten Installationsprogramme für COM-Ports verwenden die COM-Portdatenbank, um eine COM-Portnummer abzurufen. Obwohl es keine Plug & Play Anforderung ist, sollten alle vom Anbieter bereitgestellten Installationsprogramme auch die COM-Portdatenbank verwenden, um eine COM-Portnummer zu erhalten.
Informationen zu Routinen, die die COM-Portdatenbank unterstützen, finden Sie in den COMPort-Datenbankunterstützungsroutinen:
Sehen Sie sich auch die folgenden Routinen an:
SerialDisplayAdvancedSettings, eine vom System bereitgestellte Routine zum Installieren einer erweiterten Eigenschaftenseite für einen COM-Port
PPORT_ADVANCED_DIALOG typisierte Routine, die ein optionales vom Anbieter bereitgestelltes Dialogfeld bereitstellt, das von SerialDisplayAdvancedSettings aufgerufen wird
Um diese Routinen in einem Installationsprogramm aufzurufen, verknüpfen Sie den Installer mit msports.lib, die mit dem Windows Driver Kit (WDK) bereitgestellt wird.
Struktur der COM-Portdatenbank
Die COM-Portdatenbank besteht aus einem Array von Elementen, von denen jedes angibt, ob eine COM-Portnummer verwendet wird. Das erste Arrayelement entspricht COM1, das zweite entspricht COM2 usw. Die Datenbank enthält jedoch keine Informationen darüber, welchem Gerät eine angegebene Portnummer zugewiesen ist. Die Größe der Datenbank entspricht der Anzahl der Portnummern, die die Datenbank derzeit ausgibt. Die Mindestanzahl von Portnummern, die die Datenbank ausgibt, ist COMDB_MIN_PORTS_ARBITRATED, und die maximale Anzahl, die sie ausgibt, ist COMDB_MAX_PORTS_ARBITRATED. Die Größe der Datenbank kann mithilfe der ComDBResizeDatabase-Routine erhöht werden.
Öffnen und Schließen der COM-Portdatenbank
Vor der Verwendung der COM-Portdatenbank muss ein Client die Datenbank öffnen, indem er die ComDBOpen-Routine aufruft, um ein Handle für die Datenbank abzurufen. Die Datenbank wird während des fortlaufenden Datenbankzugriffs durch gegenseitigen Ausschluss geschützt. Die Datenbank kann jedoch nicht für die exklusive Verwendung geöffnet werden, und ihr Zustand kann sich dynamisch zwischen unterschiedlichen Zugriffen auf die Datenbank ändern.
Ermitteln der aktuellen Nutzung von COM-Portnummern
Nach dem Öffnen der COM-Portdatenbank kann ein Client ermitteln, welche COM-Portnummern bereits verwendet werden, indem er die ComDBGetCurrentPortUsage-Routine aufruft.
Ein Client führt in der Regel die folgenden Aufgaben aus:
Ruft die Routine auf, um zu bestimmen, wie viele Portnummern derzeit in der Datenbank als Arbitrage verwendet werden.
Ruft die Routine ein zweites Mal auf, um Informationen zur Verwendung der Portnummer in einem vom Aufrufer zugewiesenen Bitarray oder Bytearray zurückzugeben, wobei jedes Bit oder Byte angibt, ob die entsprechende Portnummer verwendet wird.
Wenn alle Portnummern in der Datenbank verwendet werden oder derzeit keine geeignete Portnummer verfügbar ist, kann der Client die Größe der Datenbank ändern. Weitere Informationen finden Sie unter Ändern der Größe der COM-Portdatenbank.
Abrufen und Freigeben einer COM-Portnummer
Ein Client kann eine COM-Portnummer abrufen, indem er eine der folgenden Routinen aufruft:
ComDBClaimNextFreePort, der die niedrigste verfügbare Portnummer angibt.
ComDBClaimPort, der versucht, eine bestimmte Portnummer anzufordern.
Beim Anfordern einer COM-Portnummer in der COM-Portdatenbank wird die Portnummer als "in Verwendung" protokolliert.
Ein Client gibt eine Portnummer durch Aufrufen der ComDBReleasePort-Routine frei.
Ändern der Größe der COM-Portdatenbank
Ein Client kann die Größe der COM-Portdatenbank ändern, indem er die ComDBResizeDatabase-Routine aufruft. Ein Client kann die Größe der Datenbank nur um ganzzahlige Vielfache von 1024 erhöhen. Die maximale Größe der Datenbank ist COMDB_MAX_PORTS_ARBITRATED.