Mi a kikötő?

Delphi. A fájlrendszer. kikötők

1.Mi a kikötő?

2. Néhány szabály a kikötőkhöz való munkavégzéshez

Emlékeztetni kell arra, hogy a kikötőkhöz kapcsolódó programok kidolgozásakor figyelembe kell venni a következő tényezőket.







  • Próbáljon magas szintű funkciókat használni a portok (különösen a WinAPI) eléréséhez, és ne használjon alacsony szintű olvasási / írási műveleteket a kikötőkben. Ha úgy dönt, hogy írjon az alacsony szintű olvasási ezeket az eljárásokat kell tenni egy külön DLL vagy VXD, az alábbi okok miatt - köztudott, hogy az operációs rendszer Windows 95/98 és NT Különösen fogva multitasking rendszerek. Azaz, ha a programot kifejezetten utal a port nem pedig a dinamikus hívás DLL funkciók vagy VXD (használat DLL mechanizmus) közvetlenül és ez hatással lehet a helyes működését a rendszer, vagy akár kitölteni. És még ha a Windows95 / 98 ez a megközelítés jól működni a Windows NT, mert az építészet nem teszi lehetővé a közvetlen írási / olvasási közvetlenül, és a használata DLL vagy VXD mechanizmus lehetővé teszi, hogy megkerülje ezt a problémát.
  • Ha dolgozik néhány nem szabványos input-output port (pl port tárolása az állam a távirányító gombjait TVTunera akkor biztosan van egy DLL szolgáltatott natív szoftverek vagy VXD irányítani az eszközt, és már nem kell írni a kódot, úgyhogy dolgozni a távirányító TVTunera A csomagban található szabványos DLL-t használom, ez azonnal megoldotta a tuner portjainak kezelésével kapcsolatos kérdéseket)

Tehát a visszavonulás egy kicsit a gyakorlat ...

Ezt a példát a DELPHI-nak a Fido hálózatban elhelyezett számos kérdéseiből vettem át, ezért a COM és LPT portokkal való együttműködésnek ismernie kell a Windows API funkcióit.

Az alábbiakban részletesen ismertetjük a szükséges funkciókat (C egyenértékben) a portokkal való együttműködéshez. (sajnálom a lehetséges helyek pontatlan fordítását, ha ez korrigál engem, ha ez nem fordított)

Példa a Delphi kódra

Mutasson egy olyan karakterláncra, amelynek null karaktere van a végén (PCHAR). amely meghatározza a neve a létrehozott objektum (fájl, csatorna, mail slot, a kommunikációs erőforrás (ebben az esetben kikötők), lemez eszköz, konzol, vagy könyvtár)

Jelzi az objektumhoz való hozzáférés típusát, értéket vesz

GENERIC_READ - olvasáshoz
GENERIC_WRITE - rögzítéshez (a GENERIC_READ és a GENERIC_WRITE GENERIC_READ művelettel történő keverés teljes hozzáférést biztosít)







Egy sor bitbitum, amely meghatározza, hogy egy objektum hogyan osztható meg a hozzá féréssel. Ha a dwShareMode értéke 0, az objektum nem osztható fel. Az objektumnyitás sorrendi műveletei nem működnek, amíg a nyitott objektum fogantyúja (fogantyúja) bezáródik. Tény, hogy kizárólagos hozzáférést biztosítanak.

Egy objektum (cél) elválasztásához használja a következő értékek egy vagy több kombinációját:

FILE_SHARE_DELETE (csak Windows NT esetén)
FILE_SHARE_READ
FILE_SHARE_WRITE

A SECURITY_ATTRIBUTES struktúrára mutató mutató, amely meghatározza, hogy a visszaadott fogantyú öröklődhet-e a gyermekfolyamatokkal. Ha az lpSecurityAttributes értéke NULL, a tokent nem lehet öröklõdni. Csak Windows NT alatt használható.

Meghatározza a függvény viselkedését, ha az objektum már létezik, és hogyan fog megnyílni ebben az esetben. Elfogadja az alábbi értékek valamelyikét.

CREATE_NEW
Új objektumot hoz létre (fájl) Hibát ad vissza, ha a megadott objektum (fájl) már létezik.

CREATE_ALWAYS
Új objektum (fájl) létrehozása A függvény felülír egy meglévő objektumot (fájl)

OPEN_EXISTING
Megnyit egy objektumot (fájl) Hibát ad vissza, ha a megadott objektum (fájl) nem létezik. (Részletesebb megjelenésért lásd az SDK-t)

OPEN_ALWAYS
Megnyit egy objektumot (fájlt), ha létezik. Ha az objektum (fájl) nem létezik, a függvény létrehozza, mintha a dwCreationDistribution CREATE_NEW lenne.

TRUNCATE_EXISTING
Megnyitja az objektumot (fájl). Ezután az objektum (fájl) a nulla méretre csonkolódik, hiba, ha a megadott objektum (fájl) nem létezik.

Az objektum attribútumai (fájl). attribútumok kombinálhatók

FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_TEMPORARY

Olyan fogantyú definiálható, amely GENERIC_READ hozzáféréssel rendelkezik egy ideiglenes objektumhoz (fájlhoz). Ideiglenes objektum (fájl) látja fájlattribútumok és a kiterjesztett attribútumok a teremtett tárgy (fájl) csak Windows NT Windows 95: Ezt az értéket kell beállítani Nil.

Ha a függvény sikeres, a visszatérési érték a megadott objektum (fájl) nyitott leírója. Ha a fájl nem létezik - 0.

Működési hibák esetén a visszatérési érték INVALID_HANDLE_VALUE. A kiterjesztett hibaadatok eléréséhez hívja a GetLastError alkalmazást.

A portok esetében a dwCreationDistribution paraméternek OPEN_EXISTINGnek kell lennie, és a hTemplate Nil-nek kell lennie. Az írás-olvasáshoz való hozzáférést explicit módon kell meghatározni.

A szerkezet tartalmazza az objektum védelmének leírását, és meghatározza, hogy a leíró képes-e öröklődni a gyermek folyamatokkal.

NLength
Meghatározza a struktúra méretét, bájtban. Ezt az értéket a méret a szerkezet SECURITY_ATTRIBUTES Windows NT használó funkciók SECURITY_ATTRIBUTES szerkezet, nem ellenőrzik az érték nLength.

LpSecurityDescriptor
Az objektum biztonsági leírójára mutató leíró, Ha a DESTINATION objektumleíró lehet öröklődni a gyermekfolyamatokkal.

BInheritHandle
Meghatározza, hogy a visszaküldött fogantyú öröklődik-e az új fogantyú létrehozásakor. Ha ez az érték TRUE, akkor az új leíró örökli a szülőből.

A SECURITY_ATTRIBUTES struktúrára mutató mutatót a Win32 API legtöbb ablakfunkciójában paraméterként használjuk.




Kapcsolódó cikkek