Condividi tramite


Metodo IShellLibrary::Save (shobjidl_core.h)

Salva la libreria in un nuovo file Library Description (*.library-ms).

Sintassi

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

Parametri

[in] psiFolderToSaveIn

Tipo: IShellItem*

Oggetto IShellItem che specifica la cartella in cui salvare la libreria o NULL per salvare la libreria con le librerie predefinite dell'utente nella FOLDERID_Libraries cartella nota.

[in] pszLibraryName

Tipo: LPCWSTR

Nome file in cui salvare la libreria. Il nome del file non deve includere l'estensione del nome file; l'estensione del nome file viene aggiunta automaticamente.

[in] lsf

Tipo: LIBRARYSAVEFLAGS

Valore LIBRARYSAVEFLAGS che specifica come gestire una collisione tra nomi della libreria.

[out] ppsiSavedTo

Tipo: IShellItem**

Oggetto IShellItem che rappresenta il file di descrizione della libreria in cui è stata salvata la libreria.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

IShellLibrary::Save and SHSaveLibraryInFolderPath creano un nuovo file di libreria e salva il file su disco. Per salvare le modifiche apportate a una libreria con un file di libreria esistente, chiamare IShellLibrary::Commit.

Se la libreria viene salvata nella cartella nota librerie (FOLDERID_Libraries), la posizione della libreria viene aggiunta automaticamente all'indice di sistema.

Per praticità, SHSaveLibraryInFolderPath può essere usato al posto di questo metodo.

Esempio

Nell'esempio di codice seguente viene illustrata la funzione helper SHSaveLibraryInFolderPath, che esegue il wrapping di questo metodo.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h (include Shobjidl.h)

Vedi anche

IShellLibrary

SHSaveLibraryInFolderPath

Librerie di Windows