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) |