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