Instructs the object to save its persistent data to memory.
HRESULT Save( void *pvMem, BOOL fClearDirty, ULONG cbSize );
- [in] The address of the memory in which the object should save up to cbSize bytes of its data. The object must not write past the address (BYTE*)((BYTE *)pvMem+cbSize).
- [in] A flag indicating whether the object should clear its dirty state on return from IPersistMemory::Save, or leave that state as is.
- [in] The amount of memory available at pvMem to which the object can write its data.
Returns one of the following values.
S_OK The object successfully initialized itself. E_UNEXPECTED This member 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.
Any object that implements IPersistMemory has some information to save persistently; therefore, E_NOTIMPL is not a valid return code.
The caller should allocate as many bytes as the object returns from IPersistMemory::GetSizeMax.