Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

This method creates a new stream object with its own seek pointer that references the same bytes as the original stream.

Syntax

HRESULT Clone( 
  IStream** 
ppstm 
);

Parameters

ppstm

[out] When successful, pointer to the location of an IStreaminterface pointer to the new stream object.

If an error occurs, this parameter is NULL.

Return Value

The following table shows the return values for this method.

Value Description

S_OK

The stream was successfully cloned.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable.

STG_E_INSUFFICIENT_MEMORY

The stream was not cloned due to a lack of memory.

STG_E_INVALIDPOINTER

The ppStmpointer is not valid.

STG_E_REVERTED

The object has been invalidated by a revert operation above it in the transaction tree.

Remarks

This method creates a stream object for accessing the same bytes but using a separate seek pointer.

The stream object sees the same data as the source stream object.

Changes written to one object are immediately visible in the other.

Range locking is shared between the stream objects.

The initial setting of the seek pointer in the cloned stream instance is the same as the current setting of the seek pointer in the original stream at the time of the clone operation.

To determine whether the platform supports this interface, see Determining Supported COM APIs.

Requirements

Header objidl.h, objidl.idl
Library ole32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later