IRootStorage::SwitchToFile
Copies the
current file associated with the storage object to a new file. The new file is
then used for the storage object and any uncommitted changes.
HRESULT SwitchToFile(
LPOLESTR pszFile |
//Filename
for the new file |
); |
|
Parameter
pszFile
Specifies the
filename for the new file. It cannot be the name of an existing file. If NULL,
this method creates a temporary file with a unique name, and you can call IStorage::Stat
Return Values
S_OK
The file was
successfully copied.
STG_E_MEDIUMFULL
The file was
not copied because of insufficient space on the storage device.
STG_E_ACCESSDENIED
The file was
not copied because the caller does not have permission to access storage
device.
STG_E_INVALIDPOINTER
The file was
not copied because the pszFile pointer is invalid.
STG_E_FILEALREADYEXISTS
The file was
not copied because the new filename (pszFile) points to an existing
file.
Remarks
The IRootStorage::SwitchToFile
method copies the file associated with the storage object. An OLE container
calls SwitchToFile to perform a full save on a file in a low-memory
situation. Typically, this is done only after a normal full save operation
(i.e., save to temporary file, delete original file, rename temporary file) has
failed with an E_OUTOFMEMORY error.
It is illegal
to call SwitchToFile if the storage object or anything contained within
it has been marshalled to another process. As a consequence, before calling SwitchToFile,
the container must call the IPersistStorage::HandsOffStorage
Notes to Implementers
If you are
implementing your own storage objects, the IRootStorage
See Also