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::SaveSHSaveLibraryInFolderPath 创建新的库文件,并将该文件保存到磁盘。 若要保存对具有现有库文件的库所做的更改,请调用 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
标头 shobjidl_core.h (包括 Shobjidl.h)

另请参阅

IShellLibrary

SHSaveLibraryInFolderPath

Windows 库