DEVPROP_TYPE_STRING_INDIRECT
Идентификатор DEVPROP_TYPE_STRING_INDIRECT представляет идентификатор базового типа данных для строки Юникода, заканчивающейся null, которая содержит косвенную ссылку на строку.
Комментарии
Непрямая ссылка на строку описывает строковый ресурс, содержащий фактическую строку. Ссылка на непрямую строку может отображаться в одном из следующих форматов:
@[путь\] FileName,-ResourceID
Windows извлекает строку из модуля, указанного в записях path и FileName , а идентификатор ресурса строки предоставляется записью ResourceID (за исключением обязательного знака "минус"). Строковый ресурс загружается из раздела ресурса модуля, который лучше всего соответствует одному из предпочитаемых языков пользовательского интерфейса вызывающей стороны. Запись path является необязательной. Если указана запись path , модуль должен находиться в каталоге, который находится в определяемом системой пути поиска.
@
InfName,%strkey%
Windows извлекает строку из раздела INF-строк INF-файла в каталоге %SystemRoot%\inf , имя которого указано в записи InfName . Идентификатор маркера strkey должен соответствовать ключу строки в разделе Строки , которая лучше всего соответствует одному из предпочитаемых языков пользовательского интерфейса вызывающего объекта. Если разделов Strings для конкретного языка не существует, Windows использует раздел Strings по умолчанию.
Нельзя сочетать DEVPROP_TYPE_STRING_INDIRECT с модификаторами property-data-type.
Задание свойства этого типа
Чтобы задать свойство, базовый тип данных которого является DEVPROP_TYPE_STRING_INDIRECT, вызовите соответствующую функцию свойства SetupDiSetXxx и задайте входные параметры функции следующим образом:
Задайте для параметра PropertyType значение DEVPROP_TYPE_STRING_INDIRECT.
Присвойте параметру PropertyBuffer указатель на буфер, содержащий строку, завершающуюся значением NULL, которая предоставляет непрямую ссылку на строку.
Задайте для параметра PropertyBufferSize размер строки в байтах.
Задайте остальные параметры функции соответствующим образом, чтобы задать свойство .
Получение значения этого типа свойства
Когда приложение вызывает функцию свойства SetupDiGetXxx для получения значения свойства этого базового типа данных, Windows пытается найти фактическую строку, на которую ссылается свойство. Если Windows может получить фактическую строку, она возвращает ее вызывающему объекту и определяет базовый тип данных полученного свойства как DEVPROP_TYPE_STRING. В противном случае Windows возвращает ссылку на непрямую строку и определяет базовый тип данных полученного свойства как DEVPROP_TYPE_STRING_INDIRECT.
Локализация статического текста
Начиная с Windows Vista вы можете локализовать настраиваемые и стандартные свойства статического текста строкового типа PnP с помощью ресурсов из строки образа pe или таблиц ресурсов, задав типы свойств статического текста DEVPROP_TYPE_STRING_INDIRECT. Можно также добавить нелокализованные данные строки замены, которые можно отформатировать в статический текст.
Строки, расположенные в ресурсе STRINGTABLE образа PE (как правило, выполняется LoadString), должны иметь следующий формат:
"@"System32\mydll.dll,-21[; Fallback" String]"
"@System32\mydll.dll,-21[; Резервная строка с %1, %2, ... to %n[;(Arg1,Arg2,...,ArgN)]]"
Строки, расположенные в ресурсе таблицы сообщений образов pe (как правило, выполняется RtlFindMessage, чаще всего используется в драйверах), должны иметь следующий формат:
"@System32\drivers\mydriver.sys,#21[; Резервная строка]"
"@System32\drivers\mydriver.sys,#21[; Резервная строка с %1, %2, ... to %n[;(Arg1,Arg2,...,ArgN)]]"
Резервная строка является необязательной, но полезной, так как ее можно вернуть, если ресурс не найден или загружен. Резервная строка также возвращается в неинтерактивные системные процессы, которые не олицетворяют пользователя и поэтому не могут отображать локализованный текст для пользователей.
Этот метод позволяет локализовать статический текст, полученный из ресурса таблицы строк или сообщений, который лучше всего соответствует языковому стандарту вызывающего объекта.
Windows будет форматировать конечные аргументы в строку (или резервную строку) при их извлечении из соответствующей таблицы ресурсов так же, как rtlFormatMessage.
Статический текст PnP настраиваемого и стандартного строкового типа локализуется при установке свойства путем загрузки ресурса из компонента, выполняющего операцию задания, которая обычно выполняется в соответствии с языковым стандартом системы по умолчанию для компонентов системного уровня.
Примечание. Образы PE могут использовать тип таблицы ресурсов (ресурсы STRINGTABLE или ресурсы таблицы сообщений).
Требования
Версия |
Windows Vista и более поздние версии Windows. |
Заголовок |
Devpropdef.h (включая Devpropdef.h) |