12.07.2015 Views

Февраль

Февраль

Февраль

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

codingМихаил Фленов/ www.vr-online.ru /Сам себеРуссиновичСовременный метод определения состояния портовВ прошлый раз мы разобрались со старыми и надежными функциями определениясостояния портов. Сегодня мы двинемся дальше и познакомимся с новыми функциямиWindows XP, которые способны совершать еще немало интересного. Новый вариантпрограммы будет отображать не только открытые порты, но и процессы, которыеих открыли. В этом нам помогут функции, не описанные в заголовочных файлах Delphiи даже VC++, поэтому мы будем их загружать динамически.ФункцииИтак, поскольку необходимых нам функций,как я уже говорил, в Delphi нет и не предвидится,работу придется начать с заголовочногофайла. Нам понадобятся следующие функции:AllocateAndGetUdpExTableFromStack, AllocateAndGetTcpExTableFromStack, CreateToolhelp32Snapshot, Process32First и Process32Next.Первые две из них реализованы в библиотекеiphlpapi.dll и необходимы для получения изстека таблицы открытых TCP- и UDP-портовсоответственно.Какая из функций какую таблицу возвращает,нетрудно догадаться, исходя из ихимени. Остальные три функции реализованыв kernel32.dll и пригодятся нам для определенияпроцесса, который открыл порт.Напомню, что в прошлый раз мы писалипрограмму TCPView с запасом на будущее,а в главном окне даже подготовилиотдельную колонку для отображенияимени процесса. Сегодня с помощьюнескольких волшебных движений тазом мыее заполним.Если ты читал предыдущую статью (а еслине читал — вставляй DVD в дисковод и бериее оттуда), то открывай свой заголовочныйфайл, который уже должен быть создан,и начинай добавлять в него описанияфункций. Как и в прошлый раз, мы будемобъявлять функции в виде переменных,чтобы загружать их динамически.Состояния TCPДвинемся по порядку, а значит, начнем с рассмотренияфункции:AllocateAndGetTcpExTableFromStack:AllocateAndGetTcpExTableFromStack: function (pTCPTable: PMIB_TCPEXTABLE;bOrder: BOOL;heap: THandle;zero: DWORD;flags: DWORD): DWORD; stdcall;Здесь мы объявляем переменную AllocateAndGetTcpExTableFromStack, по сути, представляющуюсобой функцию, которая принимает,/ 122xàêåð 02 /98/ 07

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!