Kommunikációs erőforrás beállításainak módosítása
Amikor a CreateFile függvény megnyit egy leírót egy soros kommunikációs erőforráshoz, a rendszer inicializálja és konfigurálja az erőforrást az erőforrás legutóbbi megnyitásakor beállított értékeknek megfelelően. Az előző beállítások megőrzése lehetővé teszi a felhasználó számára, hogy az eszköz újbóli megnyitásakor egy módú paranccsal megőrizze a megadott beállításokat. Az előző megnyitási művelettől örökölt értékek közé tartoznak az eszközvezérlő blokk konfigurációs beállításai (DCB szerkezet) és az I/O-műveletekben használt időtúllépési értékek. Ha az eszköz még soha nem lett megnyitva, akkor a rendszer alapértelmezés szerint van konfigurálva.
A soros kommunikációs erőforrás kezdeti konfigurációjának meghatározásához egy folyamat meghívja a GetCommState függvényt, amely egy soros portot tölt ki DCB struktúrában az aktuális konfigurációs beállításokkal. A konfiguráció módosításához egy folyamat egy DCB struktúrát határoz meg a SetCommState függvény hívásában.
A DCB struktúrájának tagjai meghatározzák a konfigurációs beállításokat, például a átviteli sebességet, a bájtonkénti adatbitek számát és a bájtonkénti stopbitek számát. Más DCB tagok speciális karaktereket ad meg, és engedélyezik a paritásellenőrzést és a folyamatvezérlést. Ha egy folyamatnak csak néhány konfigurációs beállítást kell módosítania, először meg kell hívnia GetCommState, hogy kitöltse a DCB struktúrát az aktuális konfigurációval. Ezután a folyamat módosíthatja a DCB struktúrájának fontos értékeit, és újrakonfigurálhatja az eszközt a SetCommState meghívásával és a módosított DCB szerkezet megadásával. Ez az eljárás biztosítja, hogy a DCB struktúrájának nem módosított tagjai megfelelő értékeket tartalmazzanak. Gyakori hiba például egy olyan eszköz konfigurálása DCB struktúrával, amelyben a struktúra XonChar tag egyenlő az XoffChar taggal.
A BuildCommDCB függvény egy DCB-struktúrát is módosíthat. BuildCommDCB a mód parancssori argumentumaival megegyező formátumú sztringet használ parancsban a átviteli sebesség, a paritásséma, a stopbitek száma és az adatbitek számának megadásához. A DCB többi tagját ez a függvény nem módosítja, azzal a kivétellel, hogy a megfelelő tagok letiltják az XON/XOFF és a hardverfolyamat-vezérlést. BuildCommDCB csak DCB struktúrát módosít; nem konfigurálja újra az eszközt.
A folyamatok a GetCommProperties függvénnyel újrakonfigurálhatják a kommunikációs erőforrásokat, hogy információt kérjenek az eszközillesztőktől az általa támogatott konfigurációs beállításokról. A folyamat ezeket az információkat felhasználva elkerülheti a nem támogatott konfiguráció megadását.
A SetCommState függvény újrakonfigurálja a kommunikációs erőforrást, de nem befolyásolja a megadott illesztőprogram belső kimenetét és bemeneti puffereit. A pufferek nincsenek kiürítve, és a függőben lévő olvasási és írási műveletek nem fejeződnek be idő előtt.
Egy folyamat újraincializál egy kommunikációs erőforrást a SetupComm függvénnyel, amely a következő feladatokat hajtja végre:
- A függőben lévő olvasási és írási műveleteket akkor is leállítja, ha még nem fejeződött be.
- Elveti az olvasatlan karaktereket, és felszabadítja a megadott erőforráshoz társított illesztőprogram belső kimenetét és bemeneti puffereit.
- Újratelepíti a belső kimenetet és a bemeneti puffereket.
Az SetupCommmeghívásához nincs szükség folyamatra. Ha nem, az erőforrás illesztőprogramja inicializálja az eszközt az alapértelmezett beállításokkal a kommunikációs erőforrás-kezelő első használatakor.