IByteBuffer::Seek method
[The Seek method is available for use in the operating systems specified in the Requirements section. It is not available for use in Windows Server 2003 with Service Pack 1 (SP1) and later, Windows Vista, Windows Server 2008, and subsequent versions of the operating system. The IStream interface provides similar functionality.]
The Seek method changes the seek pointer to a new location relative to the beginning of the buffer, to the end of the buffer, or to the current seek pointer.
Syntax
HRESULT Seek(
[in] LONG dlibMove,
[in] LONG dwOrigin,
[out] LONG *plibNewPosition
);
Parameters
-
dlibMove [in]
-
Displacement to be added to the location indicated by dwOrigin. If dwOrigin is STREAM_SEEK_SET, this is interpreted as an unsigned value rather than signed.
-
dwOrigin [in]
-
Specifies the origin for the displacement specified in dlibMove. The origin can be one of the values in the following table.
Value Meaning - STREAM_SEEK_SET
The new seek pointer is an offset relative to the beginning of the stream. In this case, the dlibMove parameter is the new seek position relative to the beginning of the stream. - STREAM_SEEK_CUR
The new seek pointer is an offset relative to the current seek pointer location. In this case, the dlibMove parameter is the signed displacement from the current seek position. - STREAM_SEEK_END
The new seek pointer is an offset relative to the end of the stream. In this case, the dlibMove parameter is the new seek position relative to the end of the stream. -
plibNewPosition [out]
-
Pointer to the location where this method writes the value of the new seek pointer from the beginning of the stream. You can set this pointer to NULL to indicate that you are not interested in this value. In this case, this method does not provide the new seek pointer.
Return value
The return value is an HRESULT. A value of S_OK indicates the call was successful.
Remarks
The Seek method changes the seek pointer so subsequent read and write operations can take place at a different location in the stream object. It is an error to seek before the beginning of the stream. It is not, however, an error to seek past the end of the stream. Seeking past the end of the stream is useful for subsequent write operations, as the stream will at that time be extended to the seek position immediately before the write operation is done.
You can also use this method to obtain the current value of the seek pointer by calling this method with the dwOrigin parameter set to STREAM_SEEK_CUR and the dlibMove parameter set to zero so the seek pointer is not changed. The current seek pointer is returned in the plibNewPosition parameter.
Examples
The following example shows positioning the seek pointer to a new location.
LONG lNewPos;
HRESULT hr;
// Change the seek pointer.
hr = pIByteBuff->Seek(5, STREAM_SEEK_SET, &lNewPos);
if (FAILED(hr))
printf("Failed IByteBuffer::Seek\n");
else
printf("New position is %x\n", lNewPos);
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows XP [desktop apps only] |
Minimum supported server |
Windows Server 2003 [desktop apps only] |
End of client support |
Windows XP |
End of server support |
Windows Server 2003 |
Header |
|
Type library |
|
DLL |
|
IID |
IID_IByteBuffer is defined as E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |