IPersistMemory::Save
Instructs the
object to save its persistent data to the memory pointed to by pvMem
where cbSize indicates the amount of memory available at pvMem.
The object must not write past the address (BYTE*)((BYTE *)pvMem+cbSize).
The fClearDirty flag determines whether the object is to clear its dirty
state after the save is complete.
HRESULT Save(
void* pvMem, |
//Pointer to the stream where the object is to be
saved |
BOOL fClearDirty, |
//Specifies whether to clear the dirty flag |
ULONG cbSize |
//Amount of memory to which the object can write its
data |
); |
|
Parameters
pvMem
[in] Pointer
to the memory in which the object should save up to cbSize bytes of its
data.
fClearDirty
[in] A flag
indicating whether the object should clear its dirty state on return from Save
or leave that state as-is.
cbSize
[in] The
amount of memory available at pvMem to which the object can write its
data.
Return Values
S_OK
The object
successfully initialized itself.
E_UNEXPECTED
This method
was called before the object was initialized with IPersistMemory::InitNew
or IPersistMemory::Load.
E_INVALIDARG
The number of
bytes indicated by cbSize is too small to allow the object to save
itself completely.
E_POINTER
The pointer
in pvMem is NULL.
Remarks
Any object
that implements IPersistMemory has some information to save
persistently, therefore E_NOTIMPL is not a valid return code.
The caller
should ideally allocate as many bytes as the object returns from IPersistMemory::GetSizeMax.
See Also