Программирование драйверов Windows

       

Секции inf-файла и основные общие правила ввода записей


Инсталляционный inf-файл поделен на секции, каждая из которых начинается с идентификатора (имени секции), заключенного в квадратные скобки. Часть секций является обязательной, присутствие других секций зависит от назначения драйвера.

Записи внутри каждой секции описывают действия по инсталляции, либо ссылаются на другие секции. Записи, которые регламентированы для секций определенного типа (обязательные или нет), в литературе и в документации DDK часто называются директивами.

Весь текст, введенный в inf-файле, не различается в смысле регистра символов &#8212 все имена секций и записи могут быть введены и в верхнем, и в нижнем регистре. Поэтому слова version, VERSION и Version являются идентичными для процесса установки. Текст не должен содержать символов табуляции и других невидимых управляющих символов.

Символ "точка с запятой" означает начало комментариев в следующей (за точкой с запятой) позиции, которые продолжаются до конца строки. Комментарии не принимаются в рассмотрении при анализе inf-файла. Данное правило не действует только в том случае, если такой текстовый фрагмент (содержащий точку с запятой) заключен в кавычки.

Строка, содержащая только символы возврата каретки и перевода строки, считается пустой и игнорируется. Если существует необходимость продолжить запись на следующей строке, то в последней позиции текущей строки следует ввести обратный слэш \.

Порядок следования секций в файле не играет роли, важно лишь, чтобы секции носили корректные имена и были правильно соотнесены в перекрестных ссылках. (Правда, сами разработчики придерживаются некоторых правил, например, секция [Strings] вводится обычно последней.) Секция продолжается до объявления начала следующей секции, либо до обнаружения конца файла. Имя секции должно быть уникальным для данного inf-файла. Хотя в некоторых источниках указывается, что содержимое секций, имеющие одинаковые имена, системное программное обеспечение, занимающееся интерпретацией inf-файла, объединяет, тем не менее, практика показывает, что это не так.
Например, из двух секций [Strings] принимается во внимание только содержимое первой (по тексту inf-файла).

Имя секции не должно содержать более 28 символов для Windows 9x и более 255 символов для Windows NT. Ссылки на секции могут содержать в своем составе пробелы, но только если имя в целом заключено в кавычки (то же относится и к символу точки с запятой). Допустимы точка и символ подчеркивания. Например, как указывает документация DDK, строка в кавычках ";;Std Mfg      " является приемлемой ссылкой на имя секции, если указываемая секция имеет имя, в точности совпадающее с содержимым внутри кавычек, а именно [;;  Std Mfg      ].

В теле секции информация представляется в форме записей. Общий формат элемента секции для inf-файлов, применяемых в Windows:

entry = value[,value[,value...]]

где entry является ключевым словом (начало директивы) либо маркером (ссылкой на значение &#8212 такая ссылка обособляется символами %...%). Параметры value являются значениями, соотносимыми с полем entry (именно, соотносимыми, а не присваиваемыми). В редких типах секций в роли поля entry могут выступать имена файлов (например, в секции [SourceDiskFiles]) или имена других секциях (например, в секции [DestinationDirs]).

В inf-файлах для нескольких систем в секциях для Windows 9x все запятые должны присутствовать в указанном в документации количестве, а в секциях для NT замыкающие перечисления запятые (если значения опущены) можно опускать (то есть в тех секциях, имена которых которые оформлены суффиксами .nt, .ntx86, и т.п.). Например, запись в секции SourceDisksFiles в общей нотации описывается следующим образом:

filename = diskid[, [subdir] [, size] ]

Пропуская значение subdir, указываем значение size и оставляем две запятых в середине:

filename = diskid,,size

Если пропускаем два значения (subdir и size) в inf-файле для NT, то запись выглядит так:

filename = diskid

Для Windows9x это требуется ввести иначе:

filename = diskid,,


Содержание раздела