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

Salva a biblioteca em um novo arquivo Descrição da Biblioteca (*.library-ms).

Sintaxe

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

Parâmetros

[in] psiFolderToSaveIn

Tipo: IShellItem*

O objeto IShellItem que especifica a pasta na qual salvar a biblioteca ou NULL para salvar a biblioteca com as bibliotecas padrão do usuário na pasta FOLDERID_Libraries conhecida.

[in] pszLibraryName

Tipo: LPCWSTR

O nome do arquivo no qual salvar a biblioteca. O nome do arquivo não deve incluir a extensão de nome de arquivo; a extensão de nome de arquivo é adicionada automaticamente.

[in] lsf

Tipo: LIBRARYSAVEFLAGS

O valor LIBRARYSAVEFLAGS que especifica como lidar com uma colisão de nome de biblioteca.

[out] ppsiSavedTo

Tipo: IShellItem**

O objeto IShellItem que representa o arquivo de descrição da biblioteca no qual a biblioteca foi salva.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

IShellLibrary::Save e SHSaveLibraryInFolderPath criam um novo arquivo de biblioteca e salvam o arquivo em disco. Para salvar as alterações feitas em uma biblioteca que tem um arquivo de biblioteca existente, chame IShellLibrary::Commit.

Se a biblioteca for salva na pasta conhecida Bibliotecas (FOLDERID_Libraries), o local da biblioteca será adicionado automaticamente ao índice do sistema.

Para conveniência, SHSaveLibraryInFolderPath pode ser usado no lugar desse método.

Exemplos

O exemplo de código a seguir mostra a função auxiliar SHSaveLibraryInFolderPath, que encapsula esse 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 Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl_core.h (inclua Shobjidl.h)

Confira também

Ishelllibrary

SHSaveLibraryInFolderPath

Bibliotecas do Windows