Поделиться через


Метод IShellLibrary::Save (shobjidl_core.h)

Сохраняет библиотеку в новый файл описания библиотеки (*.library-ms).

Синтаксис

HRESULT Save(
  [in]  IShellItem       *psiFolderToSaveIn,
  [in]  LPCWSTR          pszLibraryName,
  [in]  LIBRARYSAVEFLAGS lsf,
  [out] IShellItem       **ppsiSavedTo
);

Параметры

[in] psiFolderToSaveIn

Тип: IShellItem*

Объект IShellItem , указывающий папку, в которой нужно сохранить библиотеку, или значение NULL для сохранения библиотеки с библиотеками пользователя по умолчанию в FOLDERID_Libraries известной папке.

[in] pszLibraryName

Тип: LPCWSTR

Имя файла, под которым следует сохранить библиотеку. Имя файла не должно включать расширение имени файла; расширение имени файла добавляется автоматически.

[in] lsf

Тип: LIBRARYSAVEFLAGS

Значение LIBRARYSAVEFLAGS , указывающее способ обработки конфликта имен библиотеки.

[out] ppsiSavedTo

Тип: IShellItem**

Объект IShellItem , представляющий файл описания библиотеки, в который была сохранена библиотека.

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

Тип: HRESULT

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

Комментарии

IShellLibrary::Save и SHSaveLibraryInFolderPath создают файл библиотеки и сохраняют его на диск. Чтобы сохранить изменения, внесенные в библиотеку с существующим файлом библиотеки, вызовите IShellLibrary::Commit.

Если библиотека сохраняется в известной папке Библиотеки (FOLDERID_Libraries), расположение библиотеки автоматически добавляется в системный индекс.

Для удобства вместо этого метода можно использовать SHSaveLibraryInFolderPath .

Примеры

В следующем примере кода показана вспомогающая функция SHSaveLibraryInFolderPath, которая служит оболочкой для этого метода.

//
// from shobjidl.h
//
__inline HRESULT SHSaveLibraryInFolderPath(
    __in IShellLibrary *plib, 
    __in PCWSTR pszFolderPath, 
    __in PCWSTR pszLibraryName, 
    __in LIBRARYSAVEFLAGS lsf, 
    __deref_opt_out PWSTR *ppszSavedToPath
)
{
    if (ppszSavedToPath)
    {
        *ppszSavedToPath = NULL;
    }

    IShellItem *psiFolder;
    HRESULT hr = SHCreateItemFromParsingName(
      pszFolderPath, 
      NULL, 
      IID_PPV_ARGS(&psiFolder));

    if (SUCCEEDED(hr))
    {
        IShellItem *psiSavedTo;
        hr = plib->Save(psiFolder, pszLibraryName, lsf, &psiSavedTo);

        if (SUCCEEDED(hr))
        {
            if (ppszSavedToPath)
            {
                hr = psiSavedTo->GetDisplayName(
                  SIGDN_DESKTOPABSOLUTEPARSING, 
                  ppszSavedToPath);
            }
            psiSavedTo->Release();
        }
        psiFolder->Release();
    }
    return hr;
}

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)

См. также раздел

IShellLibrary

SHSaveLibraryInFolderPath

Библиотеки Windows