Поделиться через


Раздел "Строки INF"

INF-файл должен содержать по крайней мере один раздел Strings , чтобы определить каждый токен %strkey%, указанный в другом месте этого INF-файла.

[Strings] | 
[Strings.LanguageID] ...
 
strkey1 = ["]some string["]
strkey2 = "    string-with-leading-or-trailing-whitespace     "  | 
          "very-long-multiline-string" | 
          "string-with-semicolon" | 
          "string-ending-in-backslash" |
          ""double-quoted-string-value""
 ...

Записи

strkey1, strkey2, ...
Каждый ключ строки в INF-файле должен указывать уникальное имя, состоящее из букв, цифр и (или) других явно видимых символов. Символ % в таком маркере strkey должен быть выражен как %%.

некоторая строка | "некоторая строка"
Указывает строку, разделяемую при необходимости двойными кавычками ("), которая содержит буквы, цифры, знаки препинания и, возможно, даже некоторые неявно видимые символы, в частности внутренние пробелы и символы табуляции. Однако строка без кавычек не может содержать внутренние двойные кавычки (), точку с запятой (;), перевода строки, возврата или любые невидимые управляющие символы, и она не может содержать обратную косую черту () в качестве конечного символа.

"* string-with-leading-or-trailing-whitespace* " |

"очень длинная-многостронная строка" |

"string-with-точка с запятой" |

"string-ending-in-backslash" |

""double-quoted-string-value""
Значение, указанное для маркера %strkey% , должно быть заключено в двойные кавычки ("), если оно соответствует любому из следующих критериев:

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

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

  • Если такая строка содержит точку с запятой, она должна быть заключена в двойные кавычки, чтобы предотвратить усечение строки в точке с запятой. (Как уже упоминалось в разделе Общие правила синтаксиса для INF-файлов, символ с запятой начинается с каждого комментария в INF-файлах.)

  • Если такая строка заканчивается обратной косой чертой, ее необходимо заключить в двойные кавычки, чтобы предотвратить объединение строки со следующей записью. (Как уже упоминалось в разделе Общие правила синтаксиса для INF-файлов, символ обратной косой черты () используется в качестве континуатора строк в INF-файлах.)

  • Как и спецификация строки без кавычек, такая "строка в кавычках" не может содержать внутренние двойные кавычки. Однако его можно указать как явное значение строки в двойных кавычках, используя одну или несколько дополнительных пар символов двойных кавычек (например, ""some string"").

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

    Например, """"some string"" также становится "some string" при анализе.

Подводя итог, любая строка должна быть заключена в пару символов двойных кавычек ("), если выполняется любое из следующих значений:

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

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

Комментарии

Так как системное средство синтаксического анализа INF удаляет внешняя пара двойных кавычек из любой "строки в кавычках" , определяющей токен %strkey%, многие системные INF-файлы определяют все маркеры %strkey% как "заключенные в кавычки строки", чтобы избежать непреднамеренной потери начальных и конечных пробелов во время синтаксического анализа INF. Использование строк в кавычках также гарантирует, что особенно длинные строковые значения, которые переносят между строками, не могут быть усечены, а строки с конечными обратными косыми чертами не могут быть сцеплены со следующей строкой в INF-файле.

Чтобы создать один международный INF-файл, INF-файл может содержать набор строк, зависящих от языкового стандарта. Разделы LanguageID, как показано в формальном операторе синтаксиса. Расширение LanguageID представляет собой 4-значное шестнадцатеричное значение (без начального значения "0x"), которое определяется следующим образом:

  • Нижние 10 бит содержат идентификатор основного языка, а следующие 6 бит — идентификатор подязыка, как указано в макросе MAKELANGID, определенном в Winnt.h.
  • Идентификаторы языка и подязыка должны соответствовать системным значениям констант Win32 LANG_XXX и SUBLANG_XXX, определенных в Winnt.h.

Например, значение LanguageID 0407 представляет идентификатор основного языка LANG_GERMAN (07) с идентификатором подязыка SUBLANG_GERMAN (01), как показано в следующем примере:

[Strings]              ; No language ID implies English
DiskName="My Excellent Software"
LocaleSubDir="English"

[Strings.0407]         ; 0407 is the language ID for German
DiskName="Meine ausgezeichnete Software"
LocaleSubDir="German"

INF-файл может содержать только один раздел Strings, а также один раздел Strings. Раздел LanguageID для каждого значения LanguageID.

Windows выбирает один раздел Strings, который используется для перевода всех маркеров %strkey% для установки. В зависимости от текущего языкового стандарта конкретного компьютера Windows выбирает раздел Строки следующим образом:

  1. Windows сначала ищет . Значения LanguageID в INF,которые соответствуют текущему языковому стандарту, назначенному компьютеру. Если найдено точное совпадение, Windows использует эти строки.LanguageID Раздел INF для перевода всех токенов %strkey%, определенных в INF.

    Необходимо дублировать все токены строк во всех строках.* разделы, даже числовые или фиксированные константы, которые не нужно локализовать.

  2. В противном случае Windows ищет совпадение со значением LANG_XXX со значением SUBLANG_NEUTRAL в качестве SUBLANG_XXX. Если такое совпадение найдено, Windows использует этот раздел INF для перевода всех маркеров %strkey%, определенных в INF.

  3. В противном случае Windows ищет совпадение со значением LANG_XXX и любым допустимым SUBLANG_XXX для того же семейства LANG_XXX . При обнаружении такого частичного совпадения используйте строку Strings.LanguageID Раздел INF для перевода всех токенов %strkey%, определенных в INF.

  4. В противном случае Windows использует раздел undecorated Strings для преобразования маркеров %strkey%, определенных в INF.

По соглашению и для удобства при создании набора INF-файлов для международного рынка разделы Strings являются последними во всех системных INF-файлах. Использование маркеров %strkey% для всех отображаемых пользователем строковых значений в INF и их размещение в разделах строк для каждого языкового стандарта упрощает преобразование таких строк. Дополнительные сведения о файлах INF для конкретного языкового стандарта см. в разделе Создание международных ФАЙЛОВ INF.

Хотя разделы Strings являются последними разделами в каждом INF-файле, любой указанный токен %strkey%, определенный в разделе Strings , можно использовать несколько раз в других местах INF, в частности, там, где требуется переведенное значение этого токена. Функции SetupAPI расширяют каждый токен %strkey% до указанной строки, а затем используют это расширенное значение для дальнейшей обработки INF.

Использование маркеров %strkey% в INF-файлах не ограничивается отображаемыми пользователем строковыми значениями. Эти маркеры можно использовать любым способом, удобным для записи INF, если каждый маркер определен в разделе Strings . Например, при написании INF-файла, требующего спецификации нескольких GUID, может быть удобно создать маркер %strkey% для каждого GUID, используя понятное имя в качестве замены для каждого такого значения GUID.

Чтобы указать набор значений %strkey% = "{GUID}" в разделе Строки INF-файла, необходимо ввести каждое явное значение GUID только один раз. Это может помочь предоставить более удобочитаемую внутреннюю документацию INF, чем использование явных значений GUID в INF-файле.

Все маркеры %strkey% должны быть определены в INF-файле, в котором они ссылаются. Таким образом, для любого INF-файла, который содержит записи Include и Needs , включенный INF-файл должен иметь собственный раздел Strings для определения всех маркеров %strkey%, на которые ссылается этот INF.

В разделе Строки INF максимальная длина строки подстановки в символах, включая завершающий символ NULL, составляет 4096 (Windows Vista и более поздние версии Windows) и 512 (Windows Server 2003, Windows XP и Windows 2000). После подстановки строки максимальная длина строки INF-файла в символах составляет 4096, включая завершающий символ NULL.

Примеры

В следующем примере показан фрагмент раздела Strings из предоставленного системой языкового стандарта dvd.inf для установок в англоязычных странах и регионах.

[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ... 

В следующем примере показано объединение строк.

[OEM Windows System Component Verification]
OID = 1.3.6.1.4.1.311.10.3.7    ; WHQL OEM OID 
Notice = "%A% %B% %C% %D% %E%" 
[Strings]
A = "This certificate is used to sign untested drivers that have not passed the Windows Hardware Quality Labs (WHQL) testing process."
B = "This certificate and drivers signed with this certificate are intended for use in test environments only, and are not intended for use in any other context."
C = "Vendors who distribute this certificate or drivers signed with this certificate outside a test environment may be in violation of their driver signing agreement."
D = "Vendors who have their drivers signed with this certificate do so at their own risk." 
E = "In particular, Microsoft assumes no liability for any damages that may result from the distribution of this certificate or drivers signed with this certificate outside the test environment described in a vendor's driver signing agreement."

См. также раздел

Установка DDInstall

DDInstall. CoInstallers

DDInstall. HW

DDInstall. Интерфейсы

DDInstall. Услуги

Производителя

InterfaceInstall32

Модели

SourceDisksNames

Версия