Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #40, МАРТ 2004 г.

Программирование в XP

Tony

Спецвыпуск Xakep, номер #040, стр. 040-076-3


Вся работа с GDI+, в том случае если ты работаешь не с .NET, должна быть проведена между вызовами двух технических методов: GdiplusStartup() и GdiplusShutdown(), вызывать которые стоит соответственно при инициализации твоего приложения и при завершении его работы. Поэтому будь внимателен и не создавай глобальных объектов GDI+, деструкторы которых вызовутся уже при удалении твоего приложения, заведомо после GdiplusShutdown(). Элементы управления Windows XP рисуются исключительно через GDI+.

Windows Socket 2 и IPv6

Методы сокетов второй версии были доступны и в более ранних изделиях Microsoft, однако поддержка протокола IP шестой версии впервые появилась лишь в Windows XP. Этот API кардинально отличается от сокетов версии 1.1. Напомню, что этот интерфейс совместим с сокетами Беркли (BSD) и является де-факто кроссплатформенным стандартом сетевых взаимодействий низкого уровня. Сокеты второй версии являются, что называется, Microsoft Specific продуктом. Это еще одна не очень хорошая черта мелкомягких продуктов - привязка кода исключительно к одной платформе, за счет изменения названия методов и сигнатуры вызываемых методов.

Среди плюсов второй версии сокетов можно отметить лишь наличие событийной архитектуры, да поддержку IPv6. Однако плата за это велика - потеря кроссплатформенности. К тому же, еще неизвестно, когда стандарт IPv6 целиком войдет в нашу жизнь. Напомню, что уже сейчас кончаются 32-битные интернет адреса. Однако до принятия этого стандарта еще далеко, кроме того, стандарт сокетов Беркли не отрицает возможность использования этой версии IP протокола.

Службы NT

В различной девелоперской литературе, посвященной Windows с ядром NT, довольно мало места отведено службам NT - процессам, работой которых управляет Service Control Manager (SCM), запускаемый при старте системы. У служб есть очень много преимуществ и всего лишь один недостаток - кошмарный процесс отладки. Дело в том, что процесс службы запускается от имени SCM, поэтому напрямую ее отладить не удается. Приходится стартовать службу при помощи менеджера служб (Панель управления -> Администрирование -> Службы), а потом подключаться к процессу (Attach to Process). Если же глюки в службе происходят в момент ее запуска или при запуске системы, тогда смело маши белым платочком отладчику и всей его функциональности. Отладить в этот момент службу, как ты понимаешь, невозможно. Остается писать лог-файл или выводить на экран MessageBox().

А преимущества у служб следующие. Работа службы невидима пользователю. Службу можно в любой момент времени остановить, запустить и поставить на паузу (снять с паузы), как при помощи менеджера служб, так и при помощи своей управляющей программы с графическим интерфейсом. Служба может автоматически стартовать вместе с системой, при этом ничего в реестр писать не надо, достаточно при ее инсталляции указать режим запуска. Служба легко устанавливается и удаляется при помощи SCM. Процесс службы нельзя прибить при помощи Диспетчера задач, другие программы также не могут удалить этот процесс, поскольку он запущен от имени менеджера служб, доступ к которому имеет только администратор компьютера. Как видишь, служба оптимальна с точки зрения незаметности для пользователя, поэтому ее стоит использовать в тех случаях, когда ты создаешь сервер, совершающий определенную работу.

Назад на стр. 040-076-2  Содержание  Вперед на стр. 040-076-4