DEVPROP_TYPE_STRING_INDIRECT

Идентификатор DEVPROP_TYPE_STRING_INDIRECT представляет идентификатор типа базовых данных для строки Юникода, завершаемой null, которая содержит непрямую ссылку на строку.

Remarks

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

@[путь\]FileName,-ResourceID
Windows извлекает строку из модуля, указанного в записях path и FileName, а идентификатор ресурса строки предоставляется записью ResourceID (за исключением обязательного знака минуса). Строковый ресурс загружается из раздела ресурсов модуля, который лучше всего соответствует одному из предпочитаемых языков пользовательского интерфейса вызывающего объекта. Запись пути является необязательной. Если указать запись пути , модуль должен находиться в каталоге, который находится в системном пути поиска.

@ InfName,%strkey%
Windows извлекает строку из раздела INF Strings в inf-файле в каталоге %SystemRoot%\inf, имя которого предоставляется записью InfName. Идентификатор маркера strkey должен соответствовать ключу строки в разделе Strings , который лучше всего соответствует одному из предпочитаемых языков пользовательского интерфейса вызывающего объекта. Если разделы строк для конкретного языка отсутствуют, Windows использует раздел строк по умолчанию.

Невозможно объединить DEVPROP_TYPE_STRING_INDIRECT с модификаторами типа свойств.

Задание свойства этого типа

Чтобы задать свойство, базовый тип данных которого 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[; Резервная строка]"

"@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 или ресурсы таблицы сообщений).

Requirements

Version

Windows Vista и более поздних версиях Windows.

Заголовок

Devpropdef.h (include Devpropdef.h)

См. также

DEVPROP_TYPE_STRING