Отладка приложений



              

Использование API-функций


Службы обладают рядом уникальных свойств, и от вас потребуются некоторые усилия, чтобы к ним приспособиться. Во-первых, точка входа, которая используется в службах — main или winMain — не имеет особого значения. Поскольку служба не программирует пользовательского интерфейса, то вы можете использовать как одну, так и другую.

 UPS — Uninterruptible Power Supply. — Пер.

С этих функций начинается выполнение Windows-приложений. Функция main является консольной точкой входа, a WinMain — точкой входа графического интерфейса пользователя (GUI). - Пер.

Внутри функций main и winMain прежде всего нужно обратиться к API-функции startServiceCtrlDispatcher. При этом ей следует передать структуру SERVICE_TABLE_ENTRY, в которой нужно указать  имя и главную точку входа службы. Диспетчер управления службами (Service Control Manager — SCM), который запускает все службы и с которым, в конечном счете, общается StartServiceCtrlDispatcher (для того чтобы установить вашу службу), является средством операционной системы, которое, судя по его названию, управляет всеми службами. Если служба не вызывает функцию StartServiceCtrlDispatcher в течение 2 минут (для Windows NT 4) или 30 секунд (для Windows 2000) после своего запуска, то SCM завершает эту службу. Как будет показано чуть позже, этот лимит времени может определенным образом влиять на запуск отладчика.

Как только выполняется обращение к SCM-менеджеру, он порождает поток для вызова точки входа вашей службы. С этой точкой входа связано одно жесткое Требование: она должна вызвать функцию RegisterServiceCtrlHandler в течение 1 секунды после старта службы. Если вызов не последует в течение 1 секунды, SCM подумает, что служба потерпела неудачу, но не завершитее. ЕСЛИ служба, В Конечном счете, Вызывает RegisterServiceCtrlHandler, то она будет выполняться нормально. На первый взгляд, было бы логично, если бы диспетчер SCM завершил службу, заподозрив, что она закончилась неудачей, на самом деле он этого не делает. Преимуществом такого поведения является то, что значительно облегчается отладка, поскольку служба продолжает выполняться.




Содержание  Назад  Вперед