Работа с Реестром ОС WindowsNT/2000/XP, страница 14

Отладка протоколирующего приложения

Распространенной ошибкой при отладке приложения, записывающего сообщения в Журнал событий, является то, что программа Просмотр событий постоянно остается открытой. Например, предположим, что вы сделали ошибку в имени категории. С помощью Microsoft Developer Studio вы откорректировали ее в файле сообщений и затем повторно откомпилировали. После этого были перекомпилированы ресурсы DLL. Но когда вы опять обращаетесь к программе Просмотр событий, ошибка все еще будет отображаться. Даже если вы обновите данные в Просмотре событий, неправильно написанное слово не исчезнет. Проблема заключается в том, что категории загружаются при запуске Просмотра событий. Поэтому, чтобы увидеть изменение, следует закрыть эту программу и запустить ее опять.

Протоколирование производительности с помощью Системного монитора

Системный монитор — это приложение, которое входит в состав операционной системы и используется для слежения за производительностью приложений. Отслеживаемое приложение должно иметь средства, позволяющие ему взаимодействовать с Системным монитором; оно должно предоставлять API для вызова со стороны Системного монитора и заполнять ряд структур, определенных монитором. Монитор должен знать о существовании приложения, его местоположении и наборе предоставляемых API. Эта информация может быть получена из Реестра для каждого приложения, зарегистрировавшегося для работы с Системным монитором.

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

Как Реестр участвует в мониторинге производительности

В Реестре существует область производительности, относящаяся к каждому приложению, предоставляющему счетчики производительности. Такое приложение должно иметь свой подраздел в разделе HKEY_LOCAL_MACHIN SYSTEM\CurrentControlSet\Services. Подраздел можно назвать произвольно, но обычно его имя совпадает с именем приложения. Системный монитор не может видеть это имя. В приведенном ниже примере подраздел, относящийся к Системному монитору, имеет имя PerfMon. Внутри этого раздела дола быть создан еще один подраздел с именем Performance. Системный монитор работает именно с ним. Полный путь к разделу выглядит следующим образ HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\ Services\PerfM( Performance.

Создание уникальных идентификаторов

В подразделе Perfomance программа Системный монитор хранит перв уникальный идентификатор для счетчиков данного объекта. С помощью эт идентификатора генерируются все остальные уникальные идентификатора для того чтобы Системный монитор сгенерировал уникальный идентификатор для вашего счетчика, следует запустить программу lodctr.exe. К моменту начала ее работы подраздел Performance должен уже существовать. Программа lodctr.exe генерирует уникальный идентификатор и создает четыре пары параметр-значение:

1.  Первый счетчик (First Counter), в который записывается первый уникальный идентификатор.

2.  Первая справка (First Help), указывающая на уникальный идентификатор строки справки, ассоциированной с каждым счетчиком.

3.  Последний счетчик (Last Counter) и Последняя справка (Last Help), которые содержат уникальные идентификаторы Последнего счетчика и Последней справки.

Программа lodctr.exe должна знать, сколько счетчиков имеет объект и с каким объектом они ассоциированы. Эта информация находится в файле .ini, являющимся единственным параметром lodctr.exe. Там указывается имя объекта, ссылка на заголовочный файл, языки, поддерживаемые объектом, строка каждого заголовка счетчика и строки для каждой подсказки счетчика. Заголовочный файл содержит определения для каждого идентификатора. В листинге 12 показана структура файла .ini.