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

Листинг 12

[info]

drivername=PERFMON

symbolicfile=genctrnm.h

[languages]

009=English

[text]

PERFMON_ОВJ_009_NAME=Измеритель  производительности

РЕRFMON_ОВJ_009_НЕLP=Моделирует приложение,   протоколирующее

данные  о  производительности

RANDOM_009_NAME=Random

RANDOM _009_НЕLР=Случайное  число,   лежащее   в  интервале   1-100

Имя объекта задается в строке drivername. Оно должно совпадать с именем подраздела в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, связанного с данными о производительности. Имя заголовочного файла, в котором хранятся определения идентификаторов для каждого счетчика, задается в строке symbolfile.

В области text файла .ini находятся четыре строки, используемые Системным монитором для взаимодействия с пользователями. Они расположены в следующем порядке:

1.            Имя объекта.

2.            Подсказка к объекту.

3.            Имя первого счетчика.

4.            Подсказка к имени.

Такой порядок повторяется для каждого счетчика. После завершения ввода всех строк для первого языка они в том же составе повторяются и для следующего языка, до тех пор пока не будет введен текст на всех необходимых языках. Каждый язык, на котором будет «изъясняться» Системный монитор, должен иметь запись.

В секции имен области text файла .ini применяется следующий синтаксис:

<смещение>_<идентификатор_языка>_NАМЕ

где <смещение> показывает имя смещения в символьном файле, а <идентифика-тор_языка> - это номер языка. В синтаксисе справки области text файла .ini применяется следующий синтаксис:

<смещение>_<идентификатор_языка>_НЕLР

где <смещение> показывает имя смещения в символьном файле, а <идентификатор_языка> — это номер языка. Для каждого языка и каждого смещения символьном файле должна быть запись с именем и справки.

Символьный файл состоит из определений. Одно из них относится к объею оно определено (через #define) как 0. Кроме того, свое определение имеет каждый счетчик. Первый из счетчиков определен как 2. Определения остальт счетчиков увеличиваются на 2, например 4, 6, 8 и т. д. В листинге 13 показ пример символьного файла.

Листинг 13

//

// genctrnm.h

//

// Файл определений смещений для объектов и счетчиков

//

// "Относительные" смещения должны начинаться с 0 и

// увеличиваться на 2 (то есть быть четными). При выполнен]

// процедуры открытия они будут добавлены к значениям

// "Первого счетчика" и "Первой Справки" устройства,

// которому они принадлежат.

// Это делается для определения абсолютного местоположени.

// имен счетчика и объекта, а также связанного с ними текс

// справки в Реестре.

//

// Этот файл используется кодом счетчиков в библиотеке DL:

// Имя счетчика и текст справки в файле .ini используется

// программой LODCTR при загрузке имен в Реестр.

//

#define PERFMON_OBJ  0

#define RANDOM       2

Помимо настроек Реестра, выполняемых программой lodctr.exe, Системн монитор требует информации из Реестра, указывающей местонахождег библиотеки DLL и определяющей, какие API использовать для открыт объекта, сбора данных и закрытия объекта. Для этих целей применяются с. дующие четыре пары параметр-значение:

1. Library. Находится в разделе Performance и определяет местоположение библиотеки DLL. Она хранит либо полный путь к библиотеке DLL, ли если библиотека DLL находится в каталоге system32, только ее имя. В приведенном ниже примере мы создадим при регистрации пару Library и запишем в нее полный путь.

2. Open. Строка в разделе Performance, содержащая имя экспортируемой процедуры, которую следует вызвать когда объект открывается.

3.  Close. Сообщает Системному монитору имя функции API, которую следует вызвать, когда объект закрывается.

4. Collect. Сообщает Системному монитору имя функции, которую следует вызвать при сборе данных по объекту. Ее значением является имя функции API.