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

       

Замечания по декорированию имен


Начинающие разработчики inf-файлов в большинстве своем испытывают значительные затруднения при работе с ними. Между тем, при определенном взгляде на данное "странное явление", каковым является inf-файл, трудности можно существенно уменьшить.

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

[Example.Service] DisplayName = %Example.ServiceName% ServiceType = %SERVICE_KERNEL_DRIVER% StartType = %SERVICE_DEMAND_START%

[Strings] Example.ServiceName="Example NTDDK driver (V.001)" SERVICE_KERNEL_DRIVER=1 SERVICE_DEMAND_START=3

Здесь с маркером %Example.ServiceName% соотнесено строковое значение "Example NTDDK driver (V.001)", а с маркером %SERVICE_KERNEL_DRIVER% соотнесено значение 1. Текстовые значения (здесь Example.ServiceName) называются локализуемыми значениями (их можно задавать разными для разных языковых версий операционной системы, локализаций). Нетекстовые значения считаются нелокализуемыми.

В том случае, если значение маркера не раскрывается, то будет полагаться, что поле, в котором введен маркер, просто имеет текстовое значение, совпадающее с маркером, например, "%Example.ServiceName%" в примере выше.

Во-вторых, двусмысленна роль точки в формировании имен секций и маркеров.

Если точка встречается в написании маркера, то следует считать ее обычным символом, который разработчик употребил ради большей выразительности.

В случае если точка встретилась в имени секции (или в ссылке на имя секции), то возможно два варианта:

  • Присоединяемый после точки суффикс &#8212 один из предопределенных суффиксов NT, NTx86, x86, alpha, ia64, NTia64, NT.5.1, NT.5.2 либо Services, NT.Services, NTx86.Services и некоторые другие. В данном случае, это модификация

    свойств секции. В частности, секция [ModelList.NT.5.1] будет приниматься к рассмотрению только в операционной системе Windows XP.

  • Присоединяемый суффикс не является модификатором свойств секции. В данном случае точку следует рассматривать как рядовой видимый символ, как и в упомянутом выше случае, когда точка встречается в идентификаторе маркера.


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