Microsoft DirectX 9.0


The GetCurrentPosition method retrieves the current position, relative to the total duration of the stream.


HRESULT GetCurrentPosition(
  LONGLONG *pCurrent



[out] Pointer to a variable that receives the current position, in units of the current time format.

Return Value

Returns an HRESULT value. Possible values include the following.

Value Description
S_OK Success.
E_NOTIMPL Method is not supported.
E_POINTER NULL pointer argument.


This method returns the current position that playback has reached. The value ignores the playback rate and start time. For example, if you set the rate to 2.0 and the start time to five seconds, running the graph for four seconds yields a current position of nine seconds (5 + 4 x 2.0). The returned value is expressed in units of the current time format. To determine the current time format, call the GetTimeFormat method.

If the graph is paused or stopped, the current position is the point at which playback will resume.

The Filter Graph Manager calculates the position from the current stream time; it does not query the filters in the graph. For file playback, this yields an accurate result, because playback is synchronized to the stream time. For file writing, the results are not accurate. To get the current position in a file-writing graph, query the multiplexer filter. (Position is not relevant for live capture, however.)

The returned value is expressed in the current time format. The default time format is REFERENCE_TIME units (100 nanoseconds). To change time formats, use the IMediaSeeking::SetTimeFormat method.

See Also