Método IRootStorage::SwitchToFile (objidl.h)
O método SwitchToFile copia o arquivo atual associado ao objeto de armazenamento para um novo arquivo. Em seguida, o novo arquivo é usado para o objeto de armazenamento e quaisquer alterações não confirmadas.
Sintaxe
HRESULT SwitchToFile(
LPOLESTR pszFile
);
Parâmetros
pszFile
Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do arquivo para o novo arquivo. Não pode ser o nome de um arquivo existente. Se NULL, esse método criará um arquivo temporário com um nome exclusivo e você poderá chamar IStorage::Stat para recuperar o nome do arquivo temporário.
Retornar valor
Esse método pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
S_OK | O arquivo foi copiado com êxito. |
STG_E_MEDIUMFULL | O arquivo não foi copiado devido a espaço insuficiente no dispositivo de armazenamento. |
STG_E_ACCESSDENIED | O arquivo não foi copiado porque o chamador não tem permissão para acessar o dispositivo de armazenamento. |
STG_E_INVALIDPOINTER | O arquivo não foi copiado porque o ponteiro pszFile não é válido. |
STG_E_FILEALREADYEXISTS | O arquivo não foi copiado porque o novo nome de arquivo (pszFile) aponta para um arquivo existente. |
Comentários
O método IRootStorage::SwitchToFile copia o arquivo associado ao objeto de armazenamento. Um contêiner COM chama SwitchToFile para executar um salvamento completo em um arquivo em uma situação de baixa memória. Normalmente, isso é feito somente após uma operação normal de salvamento completo (ou seja, salvar em arquivo temporário, excluir arquivo original, renomear arquivo temporário) falhar com um erro de E_OUTOFMEMORY.
É errado chamar o método SwitchToFile se o objeto de armazenamento ou qualquer coisa contida nele tiver sido empacotado para outro processo. Antes de chamar SwitchToFile, o contêiner deve chamar o método IPersistStorage::HandsOffStorage para qualquer elemento dentro do objeto de armazenamento carregado ou em execução. O método HandsOffStorage força o elemento a liberar seus ponteiros de armazenamento e entrar no modo de armazenamento prático. O contêiner também deve liberar todos os ponteiros para fluxos ou armazenamentos contidos nesse armazenamento raiz. Depois que a operação de salvamento completo for concluída, o contêiner retornará os elementos contidos para o modo de armazenamento normal.
Anotações aos implementadores
Se você estiver implementando seus próprios objetos de armazenamento, os métodos IRootStorage (incluindo QueryInterface, AddRef e Release) não deverão consumir identificadores de arquivo ou memória adicionais.Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | objidl.h |
Biblioteca | Uuid.lib |
DLL | Ole32.dll |
Confira também
IPersistStorage::HandsOffStorage