ПредишенСледващото

1. Какво порт

2. Някои правила за работа с пристанища

Следва да се има предвид, че разработването на програми в областта на пристанищата трябва да имат предвид следните фактори:

Опитайте се да използвате функциите на високо ниво за достъп до пристанищата (по-специално WinAPI), а не да се използва ниско ниво четат пристанищните операции / запис. Ако все пак решите да напишете ниско ниво четенето на тези процедури е необходимо да се направи отделен DLL или VXD, поради следните причини - известно е, че операционната система Windows 95/98 и NT са особено присъщо мултитаскинг системи. Това е, ако вашата програма се отнася специално до пристанището не чрез динамичните функции повикване DLL или VXD (използване DLL механизъм) пряко и това може да повлияе на правилното функциониране на системата или дори да го запълни. И дори ако в Windows95 / 98 Този подход може да работи в Windows NT, поради своята архитектура не позволява директно четене / запис директно, както и използването на DLL или VXD механизъм позволява да се заобиколи този проблем.

Ако работите с някои нестандартни входно-изходен порт (например порт съхраняване на състоянието на бутоните на дистанционното TVTunera на тогава със сигурност има DLL доставя родния софтуер или VXD за контрол на това устройство и вече трябва да напишете кода, не, така че аз съм на работа с TVTunera на дистанционното управление използвате стандартен DLL доставен в комплекта, тя веднага се решава въпроси, свързани с пристанищата на управление на тунера)

По този начин, отстъпление - малко практика ...

функция PortInit: булева; // инициализира

е: = Windows.CreateFile (PChar ( "COM1"), или GENERIC_READ

FILE_SHARE_READ или FILE_SHARE_WRITE,

GENERIC_WRITE, 0, нула,

Указател към нула-прекратен (PCHAR), в който се посочва името на новоизграден обект (файл, канал, поща слота, комуникационния ресурс (в случая на пристанищата), диск устройство, конзола, или директория)

Показва начина на достъп до обекта е на стойност

GENERIC_READ - четете

GENERIC_WRITE - (predostovlyaet пълен достъп до операцията смесване GENERIC_READ GENERIC_READ и GENERIC_WRITE) за запис

Разположен на битови флагове, които определят как обектът може да се раздели на достъпа до нея. Ако dwShareMode - 0, обектът не може да бъде разделена. Последователността на отваряне на обекта ще се провали, докато дръжка (дръжката) Отваряне на обекта е затворен. В действителност, тя се дава изключителен достъп.

За разделяне на обекта (мишена) се използва комбинация от един или повече от следните стойности:

FILE_SHARE_DELETE (само за Windows NT)

SECURITY_ATTRIBUTES указател към структурата, която определя дали се връща дръжката може да бъде наследен от деца процеси. Ако lpSecurityAttributes ZERO, маркерът не може да се наследява. Използва се само в Windows NT.

Определя поведението на функцията, ако обектът вече съществува и как тя ще бъде отворена в този случай една от следните стойности:

Създава нов обект (файл) Хвърля за грешка, ако на обекта (файл) вече съществува.

Създава нова функция обект (файл) се записва върху съществуващ обект (файл)

Отваря обект (файл) Хвърля за грешка, ако на обекта (файл) не съществува. (За по-подробен поглед SDK)

Отваря обект (файл), ако има такъв. Ако даден обект (файл) не съществува, функцията тя създава, като че ли бяха dwCreationDistribution CREATE_NEW.

Отваря обект (файл). След обект (файл) е съкратено до нула, ако заяви razmera.Vydaet грешка обект (файл) не съществува.

атрибути на обект (файл) атрибути могат да се комбинират

Задава дръжката, за да GENERIC_READ достъп до временен обект (файл). Временен обект (файл) доставя файлови атрибути и разширени атрибути за създаване на нов обект (файл) се използва само в Windows NT Windows 95: Тази стойност трябва да бъде настроен на нула.

Ако функцията е успешен, за връщане стойност - отворена дръжка за обекта (файл). Ако файлът не съществува - 0.

Ако са настъпили неизправности, за връщане стойност - INVALID_HANDLE_VALUE. За да получите разширена информация за грешка, обадете GetLastError.

За пристанища, параметър dwCreationDistribution трябва да OPEN_EXISTING, и трябва да бъде hTemplate Nil. Достъп за четене и запис трябва да се дефинира ясно.

Структурата включва описание на сигурността на обекта и определя дали дръжката може да бъде наследен от детето.

typedef структура _SECURITY_ATTRIBUTES

Определя размера в байтове, на тази структура. Задайте стойност на размера на SECURITY_ATTRIBUTES на структура в Windows NT функции, които използват SECURITY_ATTRIBUTES структура, не се покажат nLength на стойност.

Descriptor което показва част от описание на обекта на защита, ако дръжка празен обект може да бъде назначен за наследството на деца процеси.

Той определя дали се връща дръжката се наследява, когато се създава нова ЕВРОВОК. Ако тази стойност е вярно взема нов ЕВРОВОК наследява от главата.

SECURITY_ATTRIBUTES указател към структура се използва като параметър в повечето функции Windowing в API Win32.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!