Share via


Método IShellLibrary::Save (shobjidl_core.h)

Guarda la biblioteca en un nuevo archivo de descripción de biblioteca (*.library-ms).

Sintaxis

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

Parámetros

[in] psiFolderToSaveIn

Tipo: IShellItem*

Objeto IShellItem que especifica la carpeta en la que se va a guardar la biblioteca, o NULL para guardar la biblioteca con las bibliotecas predeterminadas del usuario en la carpeta FOLDERID_Libraries conocida.

[in] pszLibraryName

Tipo: LPCWSTR

Nombre de archivo en el que se va a guardar la biblioteca. El nombre de archivo no debe incluir la extensión de nombre de archivo; La extensión de nombre de archivo se agrega automáticamente.

[in] lsf

Tipo: LIBRARYSAVEFLAGS

Valor LIBRARYSAVEFLAGS que especifica cómo controlar una colisión de nombres de biblioteca.

[out] ppsiSavedTo

Tipo: IShellItem**

Objeto IShellItem que representa el archivo de descripción de la biblioteca en el que se guardó la biblioteca.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

IShellLibrary::Save y SHSaveLibraryInFolderPath crean un nuevo archivo de biblioteca y guardan el archivo en el disco. Para guardar los cambios realizados en una biblioteca que tiene un archivo de biblioteca existente, llame a IShellLibrary::Commit.

Si la biblioteca se guarda en la carpeta Bibliotecas conocidas (FOLDERID_Libraries), la ubicación de la biblioteca se agrega automáticamente al índice del sistema.

Para mayor comodidad, SHSaveLibraryInFolderPath se puede usar en lugar de este método.

Ejemplos

En el ejemplo de código siguiente se muestra la función auxiliar SHSaveLibraryInFolderPath, que encapsula este método.

//
// 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (include Shobjidl.h)

Consulte también

IShellLibrary

SHSaveLibraryInFolderPath

Bibliotecas de Windows