Kvrsoft - ceea ce este un port

1.Ce este un port

2. Unele reguli de lucru cu porturile

Trebuie avut în vedere că atunci când dezvoltați programe care se ocupă de porturi, trebuie să luați în considerare următorii factori:







Încercați să utilizați funcțiile de nivel înalt pentru a avea acces la porturile (în special WinAPI) și să nu folosească nivel inferior operațiunilor portuare de citire / scriere. Dacă decideți să scrie cu nivel scăzut de citire aceste proceduri trebuie să facă un DLL separat sau VxD, din următoarele motive: - este cunoscut faptul că sistemul de operare Windows95 / 98 și NT sunt în special sisteme de multitasking în mod inerent. Aceasta este în cazul în care programul se referă în mod specific la portul nu prin dinamic funcțiile de apel DLL sau vxd (utilizarea mecanismului DLL), în mod direct și acest lucru poate afecta funcționarea corectă a sistemului sau chiar umple-l. Și chiar dacă în / 98 această abordare Windows95 poate lucra bine în Windows NT, din cauza arhitecturii sale nu permite o citire directă / scrie în mod direct, precum și utilizarea de DLL sau mecanism VxD vă permite de a ocoli această problemă.

Dacă lucrați cu unele port non-standard de intrare de ieșire (de exemplu, portul de stocare starea butoanelor de control de la distanță TVTunera, atunci cu siguranță există un DLL furnizat software-ul nativ sau VxD pentru a controla acest dispozitiv și nu mai trebuie să scrie cod, așa că lucrez cu TVTunera de control de la distanță Eu folosesc DLL-ul standard furnizat în pachet, aceasta rezolvă imediat problemele legate de gestionarea porturilor acestui tuner)

Deci, retragerea este un pic de practică ...

funcția PortInit: boolean; // inițializați

f: = Windows.CreateFile (PChar ('COM1'), GENERIC_READ sau

FILE_SHARE_READ sau FILE_SHARE_WRITE,

GENERIC_WRITE, 0, zero,

Pointer la un reziliat-nul (PCHAR), care specifică numele obiectului nou construit (fișier, canal, fanta de e-mail, resursa de comunicare (în acest caz, porturile), un dispozitiv de disc, consola sau director)

Indică tipul de acces la obiect, ia valoarea

GENERIC_READ - pentru citire

GENERIC_WRITE - pentru înregistrare (amestecarea cu GENERIC_READ operațiunea GENERIC_READ și GENERIC_WRITE oferă acces complet)







Un set de steaguri de biți care definesc modul în care un obiect poate fi împărțit prin accesul la el. Dacă dwShareMode este 0, obiectul nu poate fi împărțit. Operațiile secvențiale de deschidere a obiectelor vor eșua până când mânerul (mânerul) obiectului deschis va fi închis. De fapt, accesul exclusiv este acordat.

Pentru a separa un obiect (țintă), utilizați o combinație a uneia sau mai multora dintre următoarele valori:

FILE_SHARE_DELETE (numai pentru Windows NT)

Un pointer la structura SECURITY_ATTRIBUTES, care determină dacă mânerul returnat poate fi moștenit de procesele copilului. Dacă lpSecurityAttributes este NULL, tokenul nu poate fi moștenit. Folosit numai în Windows NT.

Definește comportamentul unei funcții dacă obiectul există deja și modul în care acesta va fi deschis în acest caz Acceptă una dintre următoarele valori:

Creează un obiect nou (fișier) Returnează o eroare dacă obiectul specificat (fișier) există deja.

Creează un obiect nou (fișier) Funcția suprascrie un obiect existent (fișier)

Deschide un obiect (fișier) Returnează o eroare dacă obiectul (fișierul) specificat nu există. (Pentru o privire mai detaliată, consultați SDK)

Deschide un obiect (fișier), dacă acesta există. Dacă obiectul (fișierul) nu există, funcția îl creează, ca și cum dwCreationDistribution ar fi CREATE_NEW.

Deschide obiectul (fișierul). După aceasta, obiectul (fișierul) va fi trunchiat la dimensiunea zero. Este o eroare dacă obiectul (fișierul) specificat nu există.

Atributele obiectului (fișierului), atributele pot fi combinate

Definește un handle cu acces GENERIC_READ la un obiect temporar (fișier). obiect temporar (fișier) furnizează atributele de fișiere și atribute extinse pentru obiectul creat (fișier) este utilizat numai în Windows NT Windows 95: Această valoare ar trebui să fie setat la zero.

Dacă funcția este reușită, valoarea returnată este descriptorul deschis pentru obiectul (fișierul) specificat. Dacă fișierul nu există - 0.

Dacă apar defecțiuni funcționale, valoarea returnată este INVALID_HANDLE_VALUE. Pentru a obține date extinse privind erorile, sunați la GetLastError.

Pentru porturi, parametrul dwCreationDistribution trebuie să fie OPEN_EXISTING, iar hTemplate trebuie să fie NIL. Accesul pentru citire-scriere trebuie să fie definit în mod explicit.

Structura conține o descriere a protecției obiectului și determină dacă descriptorul poate fi moștenit de către procesele copilului.

typedef struct _SECURITY_ATTRIBUTES

Specifică dimensiunea, în octeți, a acestei structuri. Setați această valoare la dimensiunea structurii SECURITY_ATTRIBUTES În Windows NT, funcțiile care utilizează structura SECURITY_ATTRIBUTES nu verifică valoarea nLength.

Un descriptor care indică un descriptor de securitate pentru obiect, dacă descriptorul de obiect DESTINATION poate fi atribuit pentru a moșteni prin procese copil.

Stabilește dacă mânerul returnat este moștenit când este creat noul mâner. Dacă această valoare ia TRUE, noul descriptor moșteneste de la părinte.

Indicatorul pentru structura SECURITY_ATTRIBUTES este folosit ca parametru în majoritatea funcțiilor de ferestre din API-ul Win32.







Articole similare

Trimiteți-le prietenilor: