Функция SHLoadIndirectString (shlwapi.h)

Извлекает указанный текстовый ресурс при его указании в виде непрямой строки (строка, начинающаяся с символа @).

Синтаксис

LWSTDAPI SHLoadIndirectString(
  [in]  PCWSTR pszSource,
  [out] PWSTR  pszOutBuf,
  [in]  UINT   cchOutBuf,
        void   **ppvReserved
);

Параметры

[in] pszSource

Тип: PCWSTR

Указатель на буфер, содержащий непрямую строку, из которой будет извлечен ресурс. Эта строка должна начинаться с символа "@" и использовать одну из форм, рассмотренных в разделе Примечания. Эта функция будет успешно принимать строку, которая не начинается с символа "@", но она будет просто передана в pszOutBuf без изменений.

[out] pszOutBuf

Тип: PWSTR

Указатель на буфер, который при успешном возвращении этой функции получает текстовый ресурс. И pszOutBuf , и pszSource могут указывать на один и тот же буфер, в этом случае исходная строка будет перезаписана.

[in] cchOutBuf

Тип: UINT

Размер буфера, на который указывает pszOutBuf, в символах.

ppvReserved

Тип: void**

Не используется; задайте значение NULL.

Возвращаемое значение

Тип: HRESULT

Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Непрямая строка может быть представлена в нескольких формах, каждая из которых имеет собственную интерпретацию:

  • Имя файла и идентификатор ресурса "", синтаксис @filename, ресурс """

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

  • Имя файла и идентификатор ресурса с синтаксисом модификатора версии """ @filename,ресурс; v2 '''

    Эту форму можно использовать при изменении ресурса, но по-прежнему использует тот же индекс или идентификатор, что и старый ресурс. Без модификатора версии кэш многоязыкового пользовательского интерфейса (MUI) не распознает, что ресурс изменился, и не будет обновляться. При добавлении модификатора версии значение рассматривается как новый ресурс и добавляется в кэш. Обратите внимание, что рекомендуется использовать новый идентификатор или индекс для нового ресурса и использовать модификатор версии только в том случае, если это невозможно.

  • Путь к файлу PRI и идентификатор ресурса ''' синтаксис @{PRIFilepath?resource} '''

    Индекс ресурсов пакета (PRI) — это двоичный формат, представленный в Windows 8, который содержит индексированные ресурсы или ссылки на ресурсы. PRI-файл входит в пакет приложения. Дополнительные сведения о PRI-файлах см. в статье Создание и получение ресурсов в приложениях Магазина Windows.

    Строка извлекается из PRI-файла с именем , используя ресурс в качестве указателя. Полученная строка копируется в выходной буфер, а функция возвращает S_OK. Строка извлекается на основе текущей среды оболочки или ResourceContext.

    Ниже приведен пример непрямой строки этого типа.

    
    @{C:\Program Files\WindowsApps\Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe\resources.pri? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
  • Имя пакета и идентификатор ресурса "", синтаксис @{PackageFullName?resource} "'"

    Строка извлекается из файла Resources.pri, хранящегося в корневом каталоге приложения пакета, определенного packageFullName, используя ресурс в качестве указателя. Полученная строка копируется в выходной буфер, а функция возвращает S_OK. Строка извлекается на основе среды приложения или ResourceContext.

    Примечание Эта строка должна ссылаться на пакет, установленный для текущего пользователя. В противном случае вызов завершится ошибкой.
     
    Ниже приведен пример непрямой строки этого типа. В этом примере имя ссылки является полным, но не содержит пространства имен (например, "ресурсы"). Стек развертывания расширяет имя, чтобы найти его во всех пространствах имен.
    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/manifestAppDescription}
    

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

    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
Если строка не является непрямой, она напрямую копируется без изменения в pszOutBuf , а функция возвращает S_OK.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header shlwapi.h
Библиотека Shlwapi.lib
DLL Shlwapi.dll (версия 5.5 или более поздняя)