Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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-ending-in-backslash" |
""double-quoted-string-value""
Значение, указанное для маркера strkey% %, должно быть заключено в двойные кавычки (") если он соответствует любому из следующих критериев:
Если указанная строка имеет начальные или конечные пробелы, которые должны храниться как часть его значения, эта строка должна быть заключена в двойные кавычки символы, чтобы предотвратить удаление начальных и/или конечных пробелов с помощью средства синтаксического анализа INF.
Если длинная строка может содержать какие-либо внутренние символы линии или возвращаемые символы из-за оболочки строки в текстовом редакторе, она также должна быть заключена в двойные кавычки, чтобы предотвратить усечение строки в исходном внутреннем канале строк или возвращаемом символе.
Если такая строка содержит точку с запятой, она должна быть заключена в двойные кавычки, чтобы предотвратить усечение строки в точке с запятой. (Как уже упоминалось в общих правилах синтаксиса для INF-файлов, символ с запятой начинает каждый комментарий в INF-файлах.)
Если такая строка заканчивается обратной косой чертой, она должна быть заключена в двойные кавычки, чтобы предотвратить объединение строки со следующей записью. (Как уже упоминалось в общих правилах синтаксиса для INF-файлов, символ обратной косой черты () используется в качестве континуатора строк в INF-файлах.)
Как и неквалированная спецификация строки, такая "кавычекная строка" не может содержать внутренние двойные кавычки символов. Однако его можно указать как явное строковое значение с двойным кавычками с помощью одной или нескольких дополнительных пар двойных кавычки символов (например, "некоторые строки").
Средство синтаксического анализа INF не только отменяет самую внешнюю пару заключенных двойных кавычки для любой "кавычки" в этом разделе, но и конденсирует каждую следующую последовательную пару двойных кавычки в один символ двойных кавычки.
Например, ""некоторая строка"" также становится "некоторой строкой" при анализе.
Чтобы свести к выводу, любая строка должна быть заключена в пару символов двойной кавычки ("), если одно из следующих значений имеет значение true:
- Строка содержит начальный или конечный пробел.
- Строка настолько длинна, что она выполняет оболочку.
- Строка содержит знак с запятой или окончательный символ обратной косой черты.
- Сама строка — это строка с кавычками.
Средство синтаксического анализа INF-файла удаляет самую внешнюю заключенную пару двойных кавычки символов, разделяющих такую строку, а также любые начальные или конечные символы пробелов за пределами двойных кавычки строковых разделителей.
Remarks
Так как средство синтаксического анализа INF-кода системы удаляет самую внешнюю пару заключительных двойных кавычки из любой "кавычки", определяющей маркер %strkey%, многие системные INF-файлы определяют все %% маркеры strkey% как "кавычки", чтобы избежать непреднамеренной потери начальных и конечных пробелов во время синтаксического анализа INF. Использование "кавыченной строки" также гарантирует, что особенно длинные строковые значения, которые оболочка между строками не могут быть усечены, и что строки с конечными обратными косыми строками нельзя объединить в следующую строку в INF-файле.
Чтобы создать один международный INF-файл, INF может иметь набор строк, относящихся к языковому стандарту.Разделы LanguageID, как показано в формальной инструкции синтаксиса. Расширение LanguageID — это шестнадцатеричное значение 4 цифры (без начального значения 0x), которое определяется следующим образом:
- Ниже 10 битов содержат идентификатор основного языка, а следующие 6 битов содержат идентификатор подлангуа, как указано макросом MAKELANGID, определенным в Winnt.h.
- Идентификаторы языка и подлангуга должны соответствовать системным значениям констант Win32 LANG_XXX и SUBLANG_XXXX, определенным в 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, а также одну строку.Раздел LanguageID для каждого значения LanguageID.
Windows выбирает один раздел Strings, который используется для перевода всех %strkey% маркеров для установки. В зависимости от текущего языкового стандарта определенного компьютера Windows выбирает раздел "Строки" следующим образом:
Windows сначала ищет . Значения LanguageID в INF, соответствующие текущему языковому стандарту, назначенному компьютеру. Если найдено точное совпадение, Windows использует эти строки.LanguageID Раздел INF для перевода всех %strkey% маркеров, определенных в INF.
Необходимо дублировать все строковые маркеры во всех строках.* разделы, даже числовые или фиксированные константы, которые не нужно локализовать.
В противном случае Windows ищет следующее совпадение со значением LANG_XXXX со значением SUBLANG_NEUTRAL в качестве SUBLANG_XXXX. Если такое совпадение найдено, Windows использует этот раздел INF для перевода всех %маркеров strkey%, определенных в INF.
В противном случае Windows ищет следующее совпадение со значением LANG_XXX и любым допустимым SUBLANG_XXX для того же семейства LANG_XXX. Если обнаружено такое частичное совпадение, используйте эти строки.LanguageID Раздел INF для перевода всех %strkey% маркеров, определенных в INF.
В противном случае Windows использует раздел "Неоцененные строки" для всех %маркеров strkey%, определенных в INF.
По соглашению и для удобства создания набора INF-файлов для международного рынка разделы Strings являются последними во всех системных INF-файлах. С помощью %strkey% маркеры для всех отображаемых пользователем строковых значений в INF и их размещение в разделах строк языкового стандарта упрощает перевод таких строк. Дополнительные сведения о INF-файлах, относящихся к языковому стандарту, см. в разделе "Создание международных INF-файлов".
Хотя разделы Strings являются последними разделами в каждом INF-файле, любой указанный %маркер strkey%, определенный в разделе Strings , можно использовать многократно в другом месте INF, в частности, где требуется переведенное значение этого маркера. Функции SetupAPI расширяют каждый %strkey% маркер в указанную строку, а затем используйте это расширенное значение для дальнейшей обработки INF.
Использование %strkey% маркеров в INF-файлах не ограничено значениями строк, видимыми пользователем. Эти маркеры можно использовать в любом случае удобно для записи INF, если каждый маркер определен в разделе Strings . Например, при написании INF-файла, требующего спецификации нескольких идентификаторов GUID, может быть удобно создать маркер strkey% %strkey для каждого GUID, используя понятное имя в качестве замены каждого такого значения GUID.
Указание набора значений% strkey % = "{GUID}" в разделе строк INF-файла требуется ввести все явные значения GUID только один раз. Это может помочь предоставить более читаемую внутреннюю документацию INF, чем с помощью явных значений GUID в INF-файле.
Все %strkey% токены должны быть определены в INF-файле, на который они ссылаются. Таким образом, для любого INF-файла с записями include and Needs, включенный INF должен иметь собственный раздел Strings, чтобы определить все %strkey% маркеры, на которые ссылается этот INF.
В разделе INF Strings максимальная длина в символах подстановки, включая завершающий символ NULL, составляет 4096 (Windows Vista и более поздних версиях Windows) и 512 (Windows Server 2003, Windows XP и Windows 2000). После подстановки строк максимальная длина в символах строки INF-файла равна 4096, включая завершающий символ NULL.
Examples
В следующем примере показан фрагмент раздела 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."