IStream::SetSize
Changes the
size of the stream object.
HRESULT SetSize(
ULARGE_INTEGER libNewSize |
//Specifies
the new size of the stream object |
); |
|
Parameter
libNewSize
[in]
Specifies the new size of the stream as a number of bytes.
Return Values
S_OK
The size of
the stream object was successfully changed.
E_PENDING
Asynchronous
Storage only: Part or all of the stream s
data is currently unavailable. For more information see IFillLockBytes
STG_E_MEDIUMFULL
The stream
size is not changed because there is no space left on the storage device.
STG_E_INVALIDFUNCTION
The value of
the libNewSize parameter is not valid. Since streams cannot be greater
than 232 bytes in the OLE-provided implementation, the high DWORD of libNewSize
must be 0. If it is nonzero, this parameter is not valid.
STG_E_REVERTED
The object
has been invalidated by a revert operation above it in the transaction tree.
Remarks
IStream::SetSize changes the size of the stream object. Call this
method to preallocate space for the stream. If the libNewSize parameters
larger than the current stream size, the stream is extended to the indicated
size by filling the intervening space with bytes of undefined value. This
operation is similar to the IStream::Write
If the libNewSize
parameter is smaller than the current stream, then the stream is truncated to
the indicated size.
The seek
pointer is not affected by the change in stream size.
Calling IStream::SetSize
can be an effective way of trying to
obtain a large chunk of contiguous space.
See Also
IStream
- Compound File Implementation, IStream::Write