OleConvertOLESTREAMToIStorage

Converts the specified object from the OLE 1 storage model to an OLE 2 structured storage object without specifying presentation data. This is one of several compatibility functions. You can use these functions to determine if an object class is from OLE 1 and to convert objects between OLE 1 and OLE 2 storage formats.

HRESULT OleConvertOLESTREAMToIStorage(

LPOLESTREAM lpolestm,
//Points to the stream where the OLE 1 storage is written
IStorage * pstg,
//Points to OLE 2 storage object
const DVTARGETDEVICE * ptd
//Points to target device
);

Parameters

lpolestm

Points to a stream that contains the persistent representation of the object in the OLE 1 storage format.

pstg

Points to the OLE 2 structured storage object.

ptd

Points to the target device for which the OLE 1 object is rendered.

Return Values

S_OK

Indicates the object was successfully converted.

CONVERT10_S_NO_PRESENTATION

Indicates object either has no presentation data or uses native data for its presentation.

DV_E_DVTARGETDEVICE or DV_E_DVTARGETDEVICE_SIZE

Indicates invalid value for ptd.

E_INVALIDARG

Indicates invalid value for lpolestm.

Comments

This function converts an OLE 1 object to an OLE 2 structured storage object. You can use this function to update OLE 1 objects to OLE 2 objects when a new version of the object application supports OLE 2.

On entry, the lpolestm parameter should be created and positioned just as it would be for an OleLoadFromStream function call. On exit, the lpolestm parameter is positioned just as it would be on exit from an OleLoadFromStream function, and the pstg parameter contains the uncommitted persistent representation of the OLE 2 storage object.

For OLE 1 objects that use native data for their presentation, the OleConvertOLESTREAMToIStorage function returns CONVERT10_S_NO_PRESENTATION. On receiving this return value, callers should call IOleObject::Update to get the presentation data so that it can be written to storage.

The following steps describe the conversion process:

  1. Create a root IStorage object by calling the StgCreateDocfile function(..., &pstg).

  2. Open the OLE 1 file (using OpenFile or another OLE 1 technique).

  3. Using the OLE 1 procedure for reading files, read from the file until an OLE object is encountered.

  4. Allocate an IStorage object from the root IStorage created in step 1:

pstg->lpVtbl->CreateStorage(...&pStgChild);

hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild);

hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);

  1. Repeat step 3 until the file is completely read.

See Also

CoIsOle1Class, OleConvertIStorageToOLESTREAM, OleConvertIStorageToOLESTREAMEx, OleConvertOLESTREAMToIStorageEx

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database