Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
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 выбирает раздел Строки следующим образом:
Windows сначала ищет . Значения LanguageID в INF,которые соответствуют текущему языковому стандарту, назначенному компьютеру. Если найдено точное совпадение, Windows использует эти строки.LanguageID Раздел INF для перевода всех токенов %strkey%, определенных в INF.
Необходимо дублировать все токены строк во всех строках.* разделы, даже числовые или фиксированные константы, которые не нужно локализовать.
В противном случае Windows ищет совпадение со значением LANG_XXX со значением SUBLANG_NEUTRAL в качестве SUBLANG_XXX. Если такое совпадение найдено, Windows использует этот раздел INF для перевода всех маркеров %strkey%, определенных в INF.
В противном случае Windows ищет совпадение со значением LANG_XXX и любым допустимым SUBLANG_XXX для того же семейства LANG_XXX . При обнаружении такого частичного совпадения используйте строку Strings.LanguageID Раздел INF для перевода всех токенов %strkey%, определенных в INF.
В противном случае 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."