Metodo IRootStorage::SwitchToFile (objidl.h)

Il metodo SwitchToFile copia il file corrente associato all'oggetto di archiviazione in un nuovo file. Il nuovo file viene quindi usato per l'oggetto di archiviazione ed eventuali modifiche di cui non è stato eseguito il commit.

Sintassi

HRESULT SwitchToFile(
  LPOLESTR pszFile
);

Parametri

pszFile

Puntatore a una stringa con terminazione Null che specifica il nome file per il nuovo file. Non può essere il nome di un file esistente. Se NULL, questo metodo crea un file temporaneo con un nome univoco ed è possibile chiamare IStorage::Stat per recuperare il nome del file temporaneo.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK Il file è stato copiato correttamente.
STG_E_MEDIUMFULL Il file non è stato copiato a causa di spazio insufficiente nel dispositivo di archiviazione.
STG_E_ACCESSDENIED Il file non è stato copiato perché il chiamante non dispone dell'autorizzazione per accedere al dispositivo di archiviazione.
STG_E_INVALIDPOINTER Il file non è stato copiato perché il puntatore pszFile non è valido.
STG_E_FILEALREADYEXISTS Il file non è stato copiato perché il nuovo nome file (pszFile) punta a un file esistente.

Commenti

Il metodo IRootStorage::SwitchToFile copia il file associato all'oggetto di archiviazione. Un contenitore COM chiama SwitchToFile per eseguire un salvataggio completo in un file in una situazione di memoria insufficiente. In genere, questa operazione viene eseguita solo dopo un'operazione di salvataggio normale, ovvero il salvataggio nel file temporaneo, l'eliminazione del file originale, la ridenominazione del file temporaneo, ha avuto esito negativo con un errore di E_OUTOFMEMORY.

È errato chiamare il metodo SwitchToFile se l'oggetto di archiviazione o qualsiasi elemento contenuto all'interno è stato sottoposto a marshalling a un altro processo. Prima di chiamare SwitchToFile, il contenitore deve chiamare il metodo IPersistStorage::HandsOffStorage per qualsiasi elemento all'interno dell'oggetto di archiviazione caricato o in esecuzione. Il metodo HandsOffStorage forza l'elemento a rilasciare i puntatori di archiviazione e attivare la modalità di archiviazione pratica. Il contenitore deve anche rilasciare tutti i puntatori ai flussi o alle risorse di archiviazione contenute in questa risorsa di archiviazione radice. Al termine dell'operazione di salvataggio completo, il contenitore restituisce gli elementi contenuti alla modalità di archiviazione normale.

Note per gli implementatori

Se si implementano oggetti di archiviazione personalizzati, i metodi IRootStorage (inclusi QueryInterface, AddRef e Release) non devono utilizzare altri handle di memoria o file.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h
Libreria Uuid.lib
DLL Ole32.dll

Vedi anche

IPersistStorage::HandsOffStorage

IPersistStorage::SaveCompleted

IStorage::Commit

IStorage::Stat